2016-07-23 65 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我有更多的列按总计,所以我试图只有一个现在,但我得到了这个错误 – Akhilesh

+2

结果是你的查询是'IEnumerable '其中'T'将成为一个匿名实例在投影中定义一个名为'total'的单一属性。将'v'的值赋给一个名为'vf'的动态变量,除了编译器不再告诉你没有名为'total'的成员之外,现在DLR将在稍后遇到同样的错误。如果你想得到* first *总数,'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);