LINQ - Преобразование списка в словарь с Value as List

У меня есть

List<MyObject> 

, который я извлекаю из базы данных. Однако я хотел бы, чтобы он был привязан к свойству в MyObject для целей группировки. Как лучше всего с помощью LINQ преобразовать мой список в:

Dictionary<long, List<MyObject>>

У меня есть следующее:

myObjectList.ToDictionary(x => x.KeyedProperty)

Но он возвращает:

Dictionary<long, MyObject>
88
задан Brandon 23 August 2010 в 15:35
поделиться

2 ответа

Похоже, вы хотите сгруппировать экземпляры MyObject по KeyedProperty и поместить эту группировку в Dictionary > . Если это так, попробуйте следующее

List<MyObject> list = ...;
var map = list
  .GroupBy(x => x.KeyedProperty)
  .ToDictionary(x => x.Key, x => x.ToList());
165
ответ дан 24 November 2019 в 07:31
поделиться

Вы должны использовать метод расширения ToLookup в Enumerable классе следующим образом:

List<MyObject> list = ...;

ILookup<long, MyObject> lookup = list.ToLookup(o => o.KeyedProperty);

Если вы хотите разместить это в словаре, то вы можете использовать метод расширения ToDictionary , например:

IDictionary<long, IEnumerable<MyObject>> dictionary = lookup.ToDictionary(
    l => l.Key);
15
ответ дан 24 November 2019 в 07:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: