에서 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가 필요하지 않기 때문에 downvote를 얻은 것 같습니다.
다음과 같이 사용하십시오.
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 값을 키로 사용하여 목록 사전으로 구체화합니다.
답변
다음은 나를 위해 일했습니다.
var temp = ctx.Set<DbTable>()
.GroupBy(g => new { g.id })
.ToDictionary(d => d.Key.id);