de-vraag
  • Вопросы
  • Метки
  • Пользователи
Оповещения
Вознаграждения
Регистрация
После регистрации, сможете получать уведомления об ответах и комментариях на Ваши вопросы.
Вход
Если у Вас уже есть аккаунт, войдите чтобы проверить новые уведомления.
Тут будут вознаграждения за добавленные вопросы, ответы и комментарий.
Дополнительно
Источник
Редактировать
 Levitikon
Levitikon
Вопрос

C # Преобразование списка <model> в словарь <enum, List <model >> на основе свойства enum в моделях?

Не следует путать: Как преобразовать List в Hashtable в C #?

У меня есть список моделей, которые я хочу организовать в хэш-таблицу с перечислением в качестве ключа, и список моделей (имеющих значение перечисления) в качестве значения.

public enum MyEnum
{
    Blue,
    Green
}

public class MyModel
{
    public MyModel(MyEnum myEnum, string foo, int bar)
    {
        this.MyEnum = myEnum;
        this.Foo = foo;
        this.Bar = bar;
    }

    public MyEnum MyEnum { get; set; }
    public string Foo { get; set; }
    public int Bar { get; set; }
}

List models = new List();

models.Add(new MyModel(MyEnum.Blue, "How", 1));
models.Add(new MyModel(MyEnum.Green, "Now", 2));
models.Add(new MyModel(MyEnum.Blue, "Brown", 3));
models.Add(new MyModel(MyEnum.Green, "Cow", 4));

Самый простой способ конвертировать список в хеш-таблицу, которая будет выглядеть так: (Простите json):

{ 
   Blue:
   [
      { Blue, "How", 1 },
      { Blue, "Brown", 3 }
   ],
   Green:
   [
      { Green, "Now", 2 },
      { Green, "Cow", 4 }
   ]
}

Когда я делаю что-то вроде этого:

var taskTable = tasks.Cast().ToDictionary(o => o.Task); (Where Task is the Enum)

Я получаю это исключение: «Элемент с тем же ключом уже добавлен».

Один лайнер с Lambda или Linq оценен!

3 2011-10-27T20:00:30+00:00 1
 Community
Community
Редактировал вопрос 23-го мая 2017 в 10:34
Программирование
linq
c#
generics
lambda
Jon Skeet
27-го октября 2011 в 8:02
2011-10-27T20:02:37+00:00
Дополнительно
Источник
Редактировать
#56792183

Мне кажется, что вы можете сделать с Lookup :

var lookup = models.ToLookup(o => o.Task);

Or if you really want the Dictionary>:

var dictionary = models.GroupBy(o => o.Task)
                       .ToDictionary(g => g.Key, g => g.ToList());
6
0
Похожие сообщества 6
ExtremeCode чат
ExtremeCode чат
6 232 пользователей
Общение на темы YouTube канала и программирования. Вакансии не размещаем. Основной канал: @extremecode Курилка (флуд здесь): @extremecode_rest
Открыть telegram
Microsoft Stack Jobs
Microsoft Stack Jobs
2 460 пользователей
Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks
Открыть telegram
С#
С#
2 372 пользователей
Стараемся не флудить. Пишем по делу. Правила: https://t.me/professorweb/430450 Для флуда @svoboda_obsh
Открыть telegram
CODE BLOG / C#
CODE BLOG / C#
1 780 пользователей
Чат для .NET разработчиков и C# программистов. По всем вопросам: @shwanoff Youtube-канал: https://youtube.com/codeblog Основной канал: @codeblog Вконтакте: https://vk.com/codeblog Правила: https://t.me/codeblog_csharp/246972 Вакансии по тегу #work
Открыть telegram
var chat = new Chat();
var chat = new Chat();
1 255 пользователей
Обсуждение вопросов по .NET Правила чата – https://blog.devdigest.today/chat-rules Чат для флуда – https://t.me/+MXQZTV9pdq5hM2Ri
Открыть telegram
C#/.NET Для Новичков
C#/.NET Для Новичков
329 пользователей
Группа создана для тех, кто изучает язык программирования C#. Верховный главнокомандующий: @BlackDeveloper Оффтоп - разрешен в меру, реклама - бан.
Открыть telegram
Добавить вопрос
Категории
Все
Технологий
Культура / Отдых
Жизнь / Искусство
Наука
Профессии
Бизнес
Пользователи
Все
Новые
Популярные
1
Roxana Elizabeth CASTILLO Avalos
Зарегистрирован 1 день назад
2
Hideo Nakagawa
Зарегистрирован 2 дня назад
3
Sergiy Tytarenko
Зарегистрирован 3 дня назад
4
shoxrux azadov
Зарегистрирован 6 дней назад
5
Koreets Koreytsev
Зарегистрирован 1 неделю назад
© de-vraag 2022
Источник
stackoverflow.com
под лицензией cc by-sa 3.0 с атрибуцией