我有以下问题:

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);

10-06 04:00