LINQ - конвертировать список в словарь со значением как список
У меня есть
List<MyObject>
который я извлекаю из базы данных. Тем не менее, я хотел бы, чтобы это было основано на свойстве в MyObject для целей группировки. Как лучше всего LINK включить мой список:
Dictionary<long, List<MyObject>>
У меня есть следующее:
myObjectList.ToDictionary(x => x.KeyedProperty)
Но он возвращает:
Dictionary<long, MyObject>
Ответы
Ответ 1
Похоже, вы хотите сгруппировать экземпляры MyObject
на KeyedProperty
и поместить эту группировку в Dictionary<long,List<MyObject>>
. Если да, попробуйте следующее
List<MyObject> list = ...;
var map = list
.GroupBy(x => x.KeyedProperty)
.ToDictionary(x => x.Key, x => x.ToList());
Ответ 2
Вы должны использовать ToLookup
метод расширения на Enumerable
class:
List<MyObject> list = ...;
ILookup<long, MyObject> lookup = list.ToLookup(o => o.KeyedProperty);
Если вы хотите поместить это в словарь, вы можете использовать ToDictionary
метод расширения, например:
IDictionary<long, IEnumerable<MyObject>> dictionary = lookup.ToDictionary(
l => l.Key);