簡體   English   中英

使用LINQ和Entity框架檢查c#var中的空值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM