2014-12-11 55 views
0

我有種內疚的問這個問題,因爲之前問過一個很熟悉的問題,但我沒有得到明確的答案。我正在構建一個silverlight程序,我需要在域服務中創建一個Linq查詢(使用wcf ria)。我需要計算這裏的總和是我的代碼在Silverlight的域服務中使用Linq

int lola = (from c in context.GetTRANSACTIONSQuery() 
      where ((c.CHART_ACC == transStudID) && (c.sch_year == 13)) 
      select c).Sum(); 

MessageBox.Show(lola.ToString()); 

括號之間的Sum()我得到那個說

錯誤1個實例論證的錯誤:無法從「System.ServiceModel.DomainServices.Client轉換.EntityQuery'到'System.Collections.Generic.IEnumerable'

我在想什麼?我知道這是語法問題,因爲我是Linq的新手。求求你了,謝謝你!

+0

究竟是什麼「GetTRANSACTIONSQuery」?你能至少發佈它的簽名嗎? – McGarnagle 2014-12-11 02:50:31

+0

我認爲你需要像'.Query.Sum()'一樣添加'.Query'。 – 2014-12-11 02:52:04

+0

這是來自域名服務模型 'public IQueryable GetTRANSACTIONS() { return this.ObjectContext.TRANSACTIONS; }' – IMAK 2014-12-11 02:52:33

回答

0

Sum()加起來是什麼?你可以嘗試:

int lola = (from c in context.GetTRANSACTIONSQuery() 
      where ((c.CHART_ACC == transStudID) && (c.sch_year == 13)) 
      select c.PROPERTYTHATYOUWANTTOADDUP).Sum(); 

或者你想計算有多少項符合你的查詢?

int lola = (from c in context.GetTRANSACTIONSQuery() 
      where ((c.CHART_ACC == transStudID) && (c.sch_year == 13)) 
      select c).Count(); 

編輯:

所以,既然你要加起來的金額屬性:

decimal lola = (from c in context.GetTRANSACTIONSQuery() 
      where ((c.CHART_ACC == transStudID) && (c.sch_year == 13)) 
      select (decimal)c.AMOUNT).Sum(); 

您也可以確保c.AMOUNT永遠不能爲null,所以你就不會遇到未來的錯誤:

decimal lola = (from c in context.GetTRANSACTIONSQuery() 
      where ((c.CHART_ACC == transStudID) && (c.sch_year == 13) && (c.AMOUNT != null)) 
      select (decimal)c.AMOUNT).Sum(); 
+0

我加了'c.AMOUNT',然後我得到了這個錯誤'錯誤不能隱式轉換類型'decimal?'到'Global4.Web.TRANSACTION'' – IMAK 2014-12-11 03:11:27

+0

所以我也把'int lola'改成'decimal lola'仍然是錯誤 – IMAK 2014-12-11 03:12:10

+0

這意味着c.AMOUNT是一個十進制類型?並將其轉換爲TRANSACTION模型。你的LINQ現在有什麼不同?似乎不會像你的代碼那樣返回那個錯誤。你必須明確地施加小數?到小數點。他們不是完全一樣的東西 – Tyress 2014-12-11 03:13:04

相關問題