0

全部,

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

即在 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 元素列表。

4

1 回答 1

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();
于 2013-02-26T22:11:27.630 回答