Programing

IGrouping에서 값을 얻는 방법

crosscheck 2020. 5. 21. 20:36
반응형

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>사용할 수 있습니다 .SelectManyIEnumerablesIEnumerable

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그룹 방법을 사용할 수 있습니다 . IGroupingA는 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

반응형