c# - 序列不包含任何元素错误,但我想检查是否为空

标签 c# asp.net-mvc linq

<分区>

我有以下问题:

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

关于c# - 序列不包含任何元素错误,但我想检查是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/942545/

相关文章:

c# - 我的局部 View 中的 Jquery 或 Javascript 问题

vb.net - HTML.DropDownListFor - SelectList 的语法糖

c# - 什么更具可读性?

c# - 鼠标滚轮在 winforms 中冒泡?

c# - 缺少必需的属性 'Id'

c# - 如何与我在 C# 中生成的文本框同时创建 RequiredFieldValidator?

asp.net-mvc - MVC DropDownListFor bool 的默认值

c# - 我可以在 GET 请求中访问 querystring 变量,但不能在 POST 中访问

c# - C#使用丢弃 '_'

c# - 如何使用此示例在 Linq 中动态旋转