Sequence不包含任何元素错误,但我想检查null

Ale*_*lex 31 c# linq asp.net-mvc

我有以下问题:

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;
}
Run Code Online (Sandbox Code Playgroud)

现在的问题是,我无法检查User对象是否为null.在我到达那里之前,我得到InvalidOperationException一句话" 序列中没有元素 ".

这对我来说似乎很奇怪,特别是因为我不想用异常建立控制流(例如封装在try..catch中并在各个部分中返回true/false).

这里发生了什么?这是正常的还是我的存储库有问题(提示?!)

顺便说一句,这个代码工作完美,当存在我正在寻找的元素(用户检索等).它只在没有匹配时才起作用.

Jar*_*Par 61

使用FirstOrDefault而不是First.这将在空集合面前返回null.

IRepository<User> = new UserRepository();
User user = userRepository.FirstOrDefault(u => u.Name == userName);
Run Code Online (Sandbox Code Playgroud)


Tom*_*han 23

尝试.First()改为.FirstOrDefault().


ich*_*ban 12

使用.FirstOrDefault()以防止错误