ILookup 유형의 두 변수가 있습니다. Union 또는 Concat을 사용하여 값을 결합하고 그 결과를 같은 유형의 세 번째 변수에 지정하려고했습니다. Union과 Concat 모두 IGrouping을 반환합니다. IGrouping을 ILookup으로 바꾸려면 죽은 상태 여야합니다.하지만 그럴 수는 없습니다 !!! :-(IGrouping은 Key를 노출하므로 Lookup의 두 번째 매개 변수로 어려움을 겪고 있습니다. 어떤 도움도 많이 받으실 것입니다.LINQ IGrouping에서 Lookup으로 변환
8
A
답변
9
먼저 시퀀스를 병합하여 사용해야합니다. ToLookup
:
SelectMany
의 형태로 사용
var lookup = first.Concat(second)
.SelectMany(group => group,
(group, item) => new { Key = group.Key,
Item = item })
.ToLookup(x => x.Key, x => x.Item);
: 하나는 수집 원래 시퀀스에서 항목으로 변환하고, 또 원래의 컬렉션 내의 아이템 (즉, 그룹)를 취하도록하고을 반환 된 컬렉션의 항목 (즉, 해당 그룹의 키와 일치하는 항목)을 사용하여 결과 항목으로 이동합니다. 이것은 키가있는 항목의 시퀀스로 그룹화를 단순화하는 가장 간단한 방법입니다. .
위의 내용은 테스트되지 않았으므로 완전히 잘못되었을 수 있습니다. 비교적 비효율적이기도합니다 ... Lookup
인스턴스를 직접 구축 할 방법이 없다는 것은 부끄러운 일입니다. 물론 ILookup
을 구현할 수 있습니다.