我有以下问题:
public Boolean Exists(String userName)
{
IRepository<User> = new UserRepository();
User user = userRepository.First(u => u.Name == userName);
if (user == null) return false;
// Exists!
return true;
}
现在的问题是,我无法检查User对象是否为null。在到达那里之前,我得到一个
InvalidOperationException
,上面写着“该序列不包含任何元素”。这对我来说真的很奇怪,尤其是当我不想建立带有异常的控制流时(例如封装在try..catch中并在各个部分返回true/false)。
这里发生了什么?这是正常现象还是我的存储库有问题(提示?!)
顺便说一句,当我要查找的元素存在(检索到用户等)时,此代码可以完美地工作。只有在没有匹配项时,它才起作用。
最佳答案
使用FirstOrDefault而不是First。面对一个空的集合,它将返回null。
IRepository<User> = new UserRepository();
User user = userRepository.FirstOrDefault(u => u.Name == userName);