mam
List<MyObject>
które pobieram z bazy danych. Chciałbym jednak, aby był on kluczowany przez właściwość w MyObject do celów grupowania. W jaki sposób LINQ najlepiej przesyła moją listę na:
Dictionary<long, List<MyObject>>
Mam:
myObjectList.ToDictionary(x => x.KeyedProperty)
Ale wraca:
Dictionary<long, MyObject>
Odpowiedzi:
Wygląda na to, że chcesz pogrupować
MyObject
instancje wedługKeyedProperty
i umieścić tę grupę w plikuDictionary<long,List<MyObject>>
. Jeśli tak, spróbuj wykonać następujące czynnościźródło
Powinieneś użyć
ToLookup
metody rozszerzenia naEnumerable
klasie w następujący sposób:Jeśli chcesz umieścić to w słowniku, możesz użyć
ToDictionary
metody rozszerzenia , na przykład:źródło
ILookup
zachowuje odniesienia, a zaakceptowana odpowiedź nie?Lookup<TKey, TValue>
może być lepszą strukturą niżDictionary<TKey, TValue>
.ILookup
często jest to idealna struktura w kodzie, często nie jest dobrze obsługiwana w przypadku serializacji.