2010-11-05 230 views
0

我有以下代碼:LINQ查詢空檢查返回布爾錯誤

var qry = from sv in Context.DocStore_SearchValues 
      where sv.Category == category 
      select sv; 
    return qry.FirstOrDefault() != null; 

我得到這個消息:

無法創建 型 「SSS.Model的恆定值。 Suburban.DocStore_Category」。 在此上下文中僅支持基本類型('Int32, 字符串和Guid') 。

如何檢查null?我嘗試作爲一個字符串,我得到了相同的消息:

return string.IsNullOrEmpty(qry.FirstOrDefault()。ToString());

有什麼建議嗎?

謝謝!

Eroc

回答

3

您不能使用where子句中的非基本類型。

它更改爲類似

where sv.Category.Name == someString 
+0

謝謝!我去了: var qry =從sv在Context.DocStore_SearchValues 其中sv.Category.Name == category.Name select sv; – ErocM 2010-11-05 18:42:48

0

如何使用IEquatable接口來實現的範疇類,使封裝你正在嘗試在查詢中做一個非原始類型內的點對象本身? 因此,它看起來是這樣的:

var qry = from sv in Context.DocStore_SearchValues 
     where sv.Category.Equals(yourCategory) == true 
     select sv; 


return qry.Any(); 

那麼你可以使用一個部分文件類擴展類別類來實現的比較邏輯。

0

你一般會想做類似where.Id == id而不是比較字符串,imo