2013-07-23 39 views
0

IM試圖使用getValueOrDefault代替空並且不等於1(代碼下面將解釋這一點)&&不能應用於爲bool和INT getvalueordefault

還即時得到的誤差& &不能應用於爲bool和詮釋,我沒有看到這裏的錯誤

string[] arrItems = new string[] { "Laptop", "Workstation", "Mobile","Monitor",,"Other Peripheral","Home Printer","Home Router","Removable Device" }; 

      var tblequipments = from d in db.tblEquipments.Include(t => t.User).Include(t => t.ChangeLog) 
           where (arrItems.Contains(d.AssetType)) && 
             (d.Development.GetValueOrDefault(0)) && 
             (d.Deleted == null || d.Deleted != 1) && 
             (d.Stock == null || d.Stock != 1) && 
             (d.DecommissionDate == Convert.ToDateTime("1900-01-01") || d.DecommissionDate == Convert.ToDateTime("0001-01-01") || d.DecommissionDate == null) 
           select d; 
+5

的錯誤信息是非常不言自明的。 '&&'是一個布爾運算符,它的兩個參數都必須是'bool'。 – Jon

+0

也許GetValueOrDefault()不返回'bool'。 – sharptooth

+0

我想'(d.Development.GetValueOrDefault(0))'這是什麼原因這個問題你爲什麼不這樣做無效和不等於1 –

回答

5

您應該使用HasValue代替GetValueOrDefault因爲前者回報bool而後者的回報(這種情況下)的int

d.Development.GetValueOrDefault(0) 

應該是:

d.Development.HasValue 
+0

(d.Development.HasValue!= 1)&& returns「=!不能應用於bool和int – AlexW

+0

只需使用'd.Development.HasValue'或者,如果您願意,可以使用'd.Development.HasValue == true' –

+0

如果該值爲false,那麼HasValue會返回true嗎? – SkeetJon

0

這是因爲在.NET BOOL和INTS是真的不同的東西。一個int永遠不會是錯誤或真實的,它只是一個int。 也許你可以做這樣的事情(d.Development.GetValueOrDefault(0) != 0)使它布爾。

+0

此返回LINQ實體無法識別方法「的Int32 GetValueOrDefault(的Int32)」方法,和這種方法不能被翻譯成表達商店。 – AlexW

相關問題