Linq group by和sum将值添加到另一列

时间:2016-05-12 19:57:54

标签: c# linq

我们需要Linq的一个要求,其中group by with multiple columns,并添加新列,基于group添加总和...

表格。

Section SecCode Name      Count(new column based on Section count)
ABC        A-1   Ram        3
ABC        A-1   Rashid     3
ABC        A-1   Mani       3
CCC        B-1   Kutty      2
CCC        B-1   Bala       2 
GGG        C-1   Ravi       1

我们有像上面这样的数据库(3列),我们需要分组&算一节

还将另一列添加为“Count”。

请帮我完成这件事。

1 个答案:

答案 0 :(得分:0)

见下面的代码:

values.Select(v => new
{
  Section = v.Section,
  SecCode = v.SecCode,
  Name = v.Name,
  Count = values.Count(i => i.Section.Equals(v.Section))
});

替代方案(大型表的性能优化):

var map = values.GroupBy(v => v.Section, v => v.Name)
    .ToDictionary(g => g.Key, g => g.Count());
var result = values.Select(v => new
    {
      Section = v.Section,
      SecCode = v.SecCode,
      Name = v.Name,
      Count = map[v.Section]
    });