2016-07-23 8 views
-2

データテーブルの列が合計されています。私は、LINQの助けを借りて、その列の総和を取る必要があり、その後、私は以下のコードで試してみましたLINQでの合計の間にエラーが発生しました

コンソールに表示する必要があるが、私はこのエラーを取得しています:

Object doesn't contain definition for total.

var v = from s in dt.AsEnumerable() 
     group s by 1 into g 
     select new 
       { 
        total = g.Sum(x => x.Field<int>("Total")) 
       }; 
dynamic vf = v; 
Console.WriteLine(vf.total); 
+1

LINQクエリは、単純型ではなく、IEnumerable'sを返します。なぜあなたはLINQクエリを使用していますか? 'dt.AsEumerable()。Sum(row => row.Field (" Total "))'を直接集計するだけです。 –

+0

kennethグループごとに合計する列がさらに多いので、今は1つだけ試してみましたが、このエラーが発生しました。 – Akhilesh

+2

クエリの結果は 'IEnumerable 'です。ここで 'T'は匿名のインスタンスになりますあなたの投影法で定義されているように、 'total'という名前の単一のプロパティを持つ型を返します。コンパイラが 'total'という名前のメンバーがないことをあなたが教えなくなることを除いて、' vf'という名前の動的変数に 'v'の値を代入することは何も変わりません - 今ではDLRは後で同じエラーに遭遇するでしょう。 * first * totalが必要な場合は、 'v.First()。total 'が機能します。何か他のものが必要な場合は、正確に何を定義する必要があります。 –

答えて

2

この

をお試しください
var vf = (from s in dt.AsEnumerable() 
      group s by 1 into g 
      select new 
      { 
       total = g.Sum(x => x.Field<int>("Total")) 
      }).FirstOrDefault(); 

Console.WriteLine(vf.total); 
関連する問題