2

オブジェクトのネストされたリストがあります。identifierAとその数値プロパティでグループ化する必要があるためSum、ネストされたリストはそれぞれグループ化されます。

public class TypeA
{
    public String identifierA{ get; set; }
    public Int32 number { get; set; }
    public List<TypeB> nestedList { get; set; }
}
public class TypeB
{
    public String identifierB { get; set; }
    public Int32 otherNumber { get; set; }
}

だから私はこのようなものを期待しています:

var List<TypeA> groupedList = (from a in TypeAList
                               group a by a.identifierA
                               into groupedData
                               select new TypeA
                               {
                                   identifierA = groupedData.Key,
                                   number = groupedData.Sum(g => g.number ),
                                   nestedList = //HOW TO GROUP NESTED PART?
                               }).ToList();
4

4 に答える 4

5

SelectManyを受け取り、の選択されたIEnumerable<SomethingWithAnIEnumerable>すべての を単一の にフラット化します。SomethingWithAnIEnumerableIEnumerableIEnumerable

nestedList = groupedData.SelectMany(pa => pa.nestedList).ToList()
于 2012-12-06T15:53:45.607 に答える
1

SelectManyを使用する

リストを 1 つの用途にグループ化したい場合

nestedList = groupedData.SelectMany(d=>d.nestedList)

Sumそのリストが必要な場合は、使用します

nestedList = groupedData.SelectMany(d=>d.nestedList).Sum(o=>o.otherNumber)
于 2012-12-06T15:52:15.723 に答える
0

あなたの IdentfierB は何らかのキーである可能性があり、結果は Grouped および Summed TypeB を反映するはずです。

List<TypeA> groupedList = TypeAList
  .GroupBy(a => a.identifierA)
  .Select(g => new TypeA()
  {
    identierA = g.Key,
    number = g.Sum(a => a.number)
    nestedList = g.SelectMany(a => a.nestedList)
      .GroupBy(b => b.identifierB)
      .Select(g2 => new TypeB()
      {
        identifierB = g2.Key,
        otherNumber = g2.Sum(b => b.otherNumber)
      }
  }
于 2012-12-06T20:06:15.430 に答える