假设我有一个LINQ查询......
var selectedUser = myDb.Users.Where<User>(u => u.Email == email).Single<User>();
查看我是否收到结果的最佳方式是什么?我只是检查是否selectedUser != null
if (selectedUser != null)
{
// OK, not null so go ahead and do stuff
}
答案 0 :(得分:4)
Single()
将抛出异常。
SingleOrDefault()
将返回单个元素或默认值。 但是,如果序列中有多个元素,它将抛出异常。
如果你可以选择第一个元素,如果,那么恰好使用FirstOrDefault()
就可以了:
var selectedUser = myDb.Users.FirstOrDefault(u => u.Email == email);
然后检查它是否像往常一样为空:
if (selectedUser != null)
{
// OK, not null so go ahead and do stuff
}
旁注在任何一种情况下,您都不应该需要明确的<T>
定义。 Where()
子句也是多余的,您可以在FirstOrDefault()
,Single()
,SingleOrDefault()
等处传递lambda。
答案 1 :(得分:-1)
。如果没有匹配的项目,则会抛出异常。而是使用SingleOrDefault并检查null。