2016-07-23 48 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);