2011-06-07 27 views
1

所以返回值我目前做了很多檢查,像這樣如何detemine如果序列具有東西,如果在LINQ

If (From p In table Where p.USER_ID = LoggedInUser.USER_ID And p.DATE >= start And p.DATE < [end] And p.PROJECT_ID = ProjectId Select p.Field).Any Then 
       Me.lblOverallTotal.Text = (From p In table Where p.USER_ID = LoggedInUser.USER_ID And p.DATE >= start And p.DATE < [end] And p.PROJECT_ID = ProjectId Select p.Field).Sum.ToString 
      Else 
       Me.lblOverallTotal.Text = "0.0" 
      End If 

然而這導致2分貝命中。 (一個以確定是否有任何再一個計算的總和。

我相信一定有這樣做不太詳細的方法,但我在努力尋找信達

回答

2

我會做這樣的事情(切換到C#作爲我的VB是弱):

var sum = (from p in table 
      where p.USER_ID == LoggedInUser.USER_ID 
      && p.DATE >= start 
      && p.DATE < end 
      && p.PROJECT_ID == ProjectId 
      select (float?)p.Field).Sum(); // use the correct data type here 

LINQ到SQL(SQL服務器提供)有一個怪癖這裏,讓null如果沒有結果,即

Me.lblOverallTotal.Text = (sum ?? 0).ToString(); 

有關鍵點(用VB讀取):切換到Nullable-of-the-typeSum()它。然後比較null

相關問題