programing tip

사전 객체로 LINQ 그룹화

itbloger 2020. 6. 16. 20:37
반응형

사전 객체로 LINQ 그룹화


에서 LINQ를 사용하여를 만들려고 Dictionary<string, List<CustomObject>>합니다 List<CustomObject>. "var"을 사용하여이 작업을 수행 할 수 있지만 익명 형식을 사용하고 싶지 않습니다. 여기 내가 가진 것입니다

var x = (from CustomObject o in ListOfCustomObjects
      group o by o.PropertyName into t
      select t.ToList());

또한 Cast<>()일단 LINQ 라이브러리에서 사용하려고 시도했지만 x유효하지 않은 캐스트의 결과로 컴파일 문제가 발생합니다.


Dictionary<string, List<CustomObject>> myDictionary = ListOfCustomObjects
    .GroupBy(o => o.PropertyName)
    .ToDictionary(g => g.Key, g => g.ToList());

@Michael Blackburn에 대해서는 언급 할 수 없지만이 경우 GroupBy가 필요하지 않기 때문에 공감대를 얻었을 것입니다.

다음과 같이 사용하십시오.

var lookupOfCustomObjects = listOfCustomObjects.ToLookup(o=>o.PropertyName);
var listWithAllCustomObjectsWithPropertyName = lookupOfCustomObjects[propertyName]

또한 GroupBy (). ToDictionary ()를 사용할 때보 다 성능이 우수하다는 것을 알았습니다.


@ atari2600의 경우 람다 구문에서 ToLookup을 사용하는 방법은 다음과 같습니다.

var x = listOfCustomObjects
    .GroupBy(o => o.PropertyName)
    .ToLookup(customObject => customObject);`

기본적으로 IGrouping을 가져와 PropertyName 값을 키로 사용하여 목록 사전으로 구체화합니다.

참고 URL : https://stackoverflow.com/questions/6361880/linq-group-by-into-a-dictionary-object

반응형