반응형
IGrouping에서 값을 얻는 방법
IGrouping 및 Select () 메서드에 대한 질문이 있습니다.
내가 IEnumerable<IGrouping<int, smth>>
이런 식으로 가지고 있다고 가정 해 봅시다 .
var groups = list.GroupBy(x => x.ID);
여기서 list는입니다 List<smth>
.
그리고 이제 IGrouping
어떤 방법으로 각각의 값 을 다른 목록에 전달해야합니다 .
foreach (var v in structure)
{
v.ListOfSmth = groups.Select(...); // <- ???
}
그런 맥락 List<smth>
에서 가치를 얻는 방법을 제안 할 수 있습니까 IGrouping<int, smth>
?
IGrouping<TKey, TElement>
implements 이므로 모든 백을 하나로 묶는 데 IEnumerable<TElement>
사용할 수 있습니다 .SelectMany
IEnumerables
IEnumerable
List<smth> list = new List<smth>();
IEnumerable<IGrouping<int, smth>> groups = list.GroupBy(x => x.id);
IEnumerable<smth> smths = groups.SelectMany(group => group);
List<smth> newList = smths.ToList();
foreach (var v in structure)
{
var group = groups.Single(g => g.Key == v. ??? );
v.ListOfSmth = group.ToList();
}
먼저 원하는 그룹을 선택해야합니다. 그런 다음 ToList
그룹 의 방법을 사용할 수 있습니다 . 는 IGrouping
A는 IEnumerable
값.
IGrouping의 정의에서 :
IGrouping<out TKey, out TElement> : IEnumerable<TElement>, IEnumerable
다음과 같은 요소를 반복 할 수 있습니다.
IEnumerable<IGrouping<int, smth>> groups = list.GroupBy(x => x.ID)
foreach(IEnumerable<smth> element in groups)
{
//do something
}
위의 답변 중 더 명확한 버전 :
IEnumerable<IGrouping<int, ClassA>> groups = list.GroupBy(x => x.PropertyIntOfClassA);
foreach (var groupingByClassA in groups)
{
int propertyIntOfClassA = groupingByClassA.Key;
//iterating through values
foreach (var classA in groupingByClassA)
{
int key = classA.PropertyIntOfClassA;
}
}
참고 URL : https://stackoverflow.com/questions/8521025/how-to-get-values-from-igrouping
반응형
'Programing' 카테고리의 다른 글
팬더는 헤더없이 테이블에서 읽습니다. (0) | 2020.05.21 |
---|---|
arrayList.toArray ()가 더 구체적인 유형을 반환하게하십시오. (0) | 2020.05.21 |
클래스의 JavaScript 클릭 이벤트 리스너 (0) | 2020.05.21 |
두 번째 줄의 CSS 줄임표 (0) | 2020.05.21 |
데이터베이스에서 연결 문자열을 얻는 방법 (0) | 2020.05.21 |