[英]Checking for null value in c# var with LINQ & Entity framework
我對LINQ和Entity框架以及c#中的var關鍵字都很陌生,所以請原諒我,如果這聽起來像一個'新手'的問題。
在執行以下操作后,我在檢查空值時遇到問題:
var entry = myDB.Entries.Where(e => e.Email == entry.Email);
即使數據庫中不存在電子郵件,條目也不等於null。
因此,在執行下一批語句之前,我必須執行if (entry.Count() < 1)
來檢查現有條目,而不是if (entry == null)
。 是否有任何理由不將變量視為null?
在您的示例中, entry
永遠不會為null
。 您認為null
的實際上是一個沒有項目的IEnumerable<Entry>
。
如果您想檢查是否至少有一個條目符合您的條件,您通常會執行以下操作:
var entries = myDB.Entries.Where(e => e.Email == entry.Email);
if (entries.Any()) {
// ...
}
如果您知道最多只有一個條目,那么您也可以這樣做:
var entry = myDB.Entries.Where(e => e.Email == entry.Email).SingleOrDefault();
if (entry != null) {
// ...
}
這更接近您的想象,但如果有多個匹配條目,則會拋出異常。
“var”關鍵字使得可以在運行時基於賦值實現任何類型,因此當您使用“Where”查詢時,var條目變為“IEnumerable”,由Where返回,這就是您必須檢查計數的原因。
在VB中
Dim entry = myDB.Entries.Where(Function(e)e.Email = entry.Email).SingleOrDefault()
如果輸入IsNot Nothing Then
'我們有價值
其他
'我們沒有價值
萬一
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.