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

yul*_*lun 2 c# linq lambda entity-framework var

我对LINQ和Entity框架以及c#中的var关键字都很陌生,所以如果这听起来像是一个"新手"问题,请原谅我.

在执行以下操作后,我在检查空值时遇到问题:

var entry = myDB.Entries.Where(e => e.Email == entry.Email);
Run Code Online (Sandbox Code Playgroud)

即使数据库中不存在电子邮件,条目也不等于null.

因此,在执行下一批语句之前,if (entry == null)我不得不if (entry.Count() < 1)检查现有的条目.是否有任何理由不将变量视为null?

Jon*_*Jon 8

在你的榜样,entry永远null.你的想法null实际上是IEnumerable<Entry>没有物品的.

如果您想检查是否至少有一个条目符合您的条件,您通常会执行以下操作:

var entries = myDB.Entries.Where(e => e.Email == entry.Email);
if (entries.Any()) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

如果您知道最多只有一个条目,那么您也可以:

var entry = myDB.Entries.Where(e => e.Email == entry.Email).SingleOrDefault();
if (entry != null) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

这更接近您的想象,但如果有多个匹配条目,则会抛出异常.