3

私はこのデータテーブルを持っています:

ここに画像の説明を入力

また、各 Column の合計を保持する必要がある 2 つのプロパティを含むクラスもあります。

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クエリで埋める(またはそれらの小道具で新しいクラスを作成する)方法はありますか?(ここには 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 に答える