2015-10-05 53 views
0

道歉第一,我真的是LINQ的初學者,因此是一個問題。解決LINQ to SQL的空類型

我無法捕捉到數據庫爲空的值。我正在做一個LINQ到DataTable。我正在檢查雙重類型。

這是我的代碼:

var results2 = from myRow in table.AsEnumerable() 
             where myRow.Field<double>("Cost") == 0 
             select myRow; 

代碼工作正常,如果值是零。我該如何檢查null以及?

另一個問題也涉及到這個問題:

我有這樣的代碼:

var results = from myRow in table.AsEnumerable() 
             where myRow.Field<string>("Name") == "test" 
             select myRow; 

這工作得很好,如果值是測試。如何檢查「名稱」列是否爲空/空?

+0

'myRow.Field (「Cost」)== null'? – Ric

+0

爲什麼使用'.AsEnumerable()'?你確定這是Linq to SQL嗎?爲什麼不使用類型化的數據上下文? –

+0

我對DataTable運行此LINQ。 –

回答

2

使用||運算符添加OR條件。

對於可空的雙重情況,除了檢查null之外,還需要檢查它是否具有值AND是您期望的值。

var results2 = from myRow in table.AsEnumerable() 
       where (
        myRow.Field<double?>("Cost").HasValue && 
        myRow.Field<double?>("Cost").Value == 0) 
       || !myRow.Field<double?>("Cost").HasValue 
       select myRow; 


var results = from myRow in table.AsEnumerable() 
       where myRow.Field<string>("Name") == "test" || 
        myRow.Field<string>("Name") == null 
       select myRow;