聚合Linq函数

时间:2013-02-26 22:06:20

标签: linq linq-to-entities

所有

我在List中有本地数据,其中Col1,Col2,Col3,SumNumberColumn作为每个元素的属性。我想做的很简单就是SQL,但我很难用Linq完成同样的事情。我想要做的是,从List中执行一个GroupBy,它将忽略Col3中的内容并聚合SumNumberColumn,但仍然返回一个IEnumerable的MyDataType。

即。在SQL中我会做

Select Col1, Col2, null as Col3, Sum(SumNumberColumn) as SumNumberColumn from MyTable GroupBy Col1, Col2;

使用Linq,我想做的是(伪代码)

List<MyDataType> lstAgg = lst.GroupBy(a => {a.Col1, a.Col2}).Select(a => new {a.Col1, a.Col2, Col3 = null, sum(a.Col4) }).ToList(); //lst is also a List<MyDataType>.

实现这一目标的最佳方法是什么?

编辑:我已经看到了多个如何完成此操作并返回匿名类型的示例,但我确实需要返回一个MyDataType元素列表。

1 个答案:

答案 0 :(得分:2)

您可以返回List<MyDataType>

var lstAgg = lst.GroupBy(a => new { a.Col1, a.Col2})
                .Select(a => new MyDataType()
                                 {
                                     Col1 = a.Key.Col1,
                                     Col2 = a.Key.Col2,
                                     Col3 = null,
                                     SumNumberColumn = a.Sum(e => e.SumNumberColumn)
                                 })
                .ToList();