나는
List<MyObject>
데이터베이스에서 검색합니다. 그러나 그룹화 목적으로 MyObject의 속성으로 키를 지정하고 싶습니다. LINQ에서 내 목록을 다음으로 캐스팅하는 가장 좋은 방법은 무엇입니까?
Dictionary<long, List<MyObject>>
다음이 있습니다.
myObjectList.ToDictionary(x => x.KeyedProperty)
그러나 다음을 반환합니다.
Dictionary<long, MyObject>
답변
당신이 그룹에 원하는 것 같은데 MyObject
하여 인스턴스 KeyedProperty
와로 그룹화 것을 넣어 Dictionary<long,List<MyObject>>
. 그렇다면 다음을 시도하십시오.
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);