2015-09-14 58 views
0

我想下面的查詢轉換到LINQ: -LINQ的 - 與ISNULL總和

select SUM(isnull(day1,0)+isnull(day2,0)) as TCount from CALC 

所以我這樣做: -

double total = ctx.tblCALC.Sum(m=>m.day1 + m.day2); 

我無法理解在1日isnull部分查詢。任何人都可以解釋如何在Linq中製作它&。

+2

'ISNULL()'用於檢查給定的列值,如果列值爲null,則將其替換爲'0'。 – Kaf

+0

SQL中的ISNULL函數需要兩個參數,一個是要檢查其是否具有NULL值的字段名稱,另一個是替換值,即如果該值爲NULL,則返回第二個參數。所以聲明ISNULL(day1,0)表示如果day1爲null,則返回0. –

回答

1

您可以使用Null Coalesce運營商提供的day1 & day2應該在服務器端代碼可空: -

double total = ctx.tblCALC.Sum(m=>m.day1 ?? 0 + m.day2 ?? 0); 

在SQL服務器ISNULL: -

替換NULL與指定的替換值

我們正在做在C#中使用null coalsece操作符也是一樣。

+0

'??不能應用於double類型的操作數來獲取這個錯誤。 – Anup

+1

@Anup - 是的,顯然它們應該在你的服務器代碼中是可空的,即它的數據類型應該是'double' –