所有
我在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元素列表。答案 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();