3

我有这个数据表:

在此处输入图像描述

我还有一个包含两个属性的类,这些属性应该保存每个 Column 的总和:

class MyClass
{
 public decimal CatSum {get;set;}
 public decimal DogSum {get;set;}
}

我目前通过以下方式填充这些道具:

 myClass.CatSum = dt.AsEnumerable().Sum(r => r["Cat"].ToDecimalOrZero());
 myClass.DogSum = dt.AsEnumerable().Sum(r => r["Dog"].ToDecimalOrZero())

有没有办法用1 linq query填充(或用这些道具创建新类)那些道具?(我这里没有任何 groupby 字段)

;

4

3 回答 3

4

您可以将实例MyClass用作累加器并将结果汇​​总到其中:

var myClass = dt.AsEnumerable()
                .Aggregate(new MyClass(),
                           (a,r) => {
                                a.CatSum += r["Cat"].ToDecimalOrZero();
                                a.DogSum += r["DogS"].ToDecimalOrZero();
                                return a;
                           });
于 2013-07-29T11:01:05.257 回答
2

ASum是一个聚合查询,您不能使用单个 LINQ 查询来分配 2 个属性。

于 2013-07-29T10:58:52.457 回答
1

为什么要使用 Linq?

var myClass = new MyClass
{
    CatSum = (decimal)dt.Compute("SUM(Cat)", ""),
    DogSum = (decimal)dt.Compute("SUM(Dog)", "")
}
于 2013-07-29T11:04:42.440 回答