[C#] IGrouping에서 “Value”속성 가져 오기

나는 같은 데이터 구조를 가지고있다

public DespatchGroup(DateTime despatchDate, List<Products> products);

그리고 나는 노력하고 있습니다 …

var list = new List<DespatchGroup>();

foreach (var group in dc.GetDespatchedProducts().GroupBy(i => i.DespatchDate))
{
    // group.Values is not correct... how do I write this?
    list.Add(new DespatchGroup(group.Key, group.Values);
}

IGrouping그룹 내 데이터 레코드에 실제로 도달하는 방법을 볼 수 없으므로 분명히 이해 하고 있지 않습니다!



답변

그룹은 다음을 구현 IEnumerable<T>합니다. 일반적 으로을 호출 foreach하십시오 group. 경우 에는 다음이 필요합니다 List<T>.

list.Add(new DespatchGroup(group.Key, group.ToList());


답변

더 없습니다 Values때문에 재산 또는 유사한 IGrouping<T>자체 입니다IEnumerable<T> 값의 순서가. 이 경우에 필요한 것은 해당 순서를 목록으로 변환하는 것입니다.

list.Add(new DespatchGroup(group.Key, group.ToList());


답변

선택한 그룹에 대해 전화를 걸 수 있습니다

var selectedGroupValues=selectedGroup.SelectMany(x=>x);


답변

다른 답변에서 알 수 있듯이 사용할 수있는 특정 색인에 액세스 해야하는 경우 그룹화는 IEnumerable group.ElementAt(i)입니다.

이것은 아마도 많은 사람들에게 명백 할 것이지만 희망적으로는 몇 사람을 도울 것입니다!


답변