У меня есть
List<MyObject>
, который я извлекаю из базы данных. Однако я хотел бы, чтобы он был привязан к свойству в MyObject для целей группировки. Как лучше всего с помощью LINQ преобразовать мой список в:
Dictionary<long, List<MyObject>>
У меня есть следующее:
myObjectList.ToDictionary(x => x.KeyedProperty)
Но он возвращает:
Dictionary<long, MyObject>
Похоже, вы хотите сгруппировать экземпляры MyObject
по KeyedProperty
и поместить эту группировку в Dictionary
. Если это так, попробуйте следующее
List<MyObject> list = ...;
var map = list
.GroupBy(x => x.KeyedProperty)
.ToDictionary(x => x.Key, x => x.ToList());
Вы должны использовать метод расширения 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);