代码之家  ›  专栏  ›  技术社区  ›  iLemming

分组拉姆达

  •  1
  • iLemming  · 技术社区  · 14 年前

    如果我有这样的结构:

    Batch  Amount
    76  495.4
    76  975.75
    76  25
    76  442.46
    77  1335.12
    77  2272.37
    77  34.5
    77  496.99
    77  360
    77  13
    77  594.6
    

    我想要一些像

    Batch  Amount
    76    1938.61
    77    5106.58
    

    表达式应该如何?

    我从以下几点开始:

    batches.GroupBy(x => new { Batch = x.Batch, Amount = x.Amount });
    

    但这不是我想要的。帮我把它弄好。谢谢

    2 回复  |  直到 14 年前
        1
  •  5
  •   mqp    14 年前

    关闭。试试这个:

    batches.GroupBy(x => x.Batch, x => x.Amount).Select(g => new {
        Batch = g.Key,
        Amount = g.Sum()
    });
    
        2
  •  1
  •   iLemming    14 年前

    查询将如下所示:

    var bs = from s in batches
                group s by s.Batch into g
                select new { Batch = g.Key, Amount = g.Sum(p => p.Amount) };
    

    尽管我不知道lambda的当量是多少

    UPD:

    Resharper帮了很多忙!:)

    var batches = bs .GroupBy(s => s.Batch).Select(
                    g => new {Batch = g.Key, Amount = g.Sum(p => p.Amount)});