[asp.net]FirstOrDefault 给出错误的不正确结果

发布时间: 2016/11/13 23:22:54
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我很困惑如何修复此问题。

我想如果显示"没有客户发现" custid 的值 = 0

@if (Model.Customer == null)
{
    <p>no customer found</p>
}
else
{
<p> @Model.Customer.CustomerName </p>        
}

控制器︰

  public ActionResult Index(int custID = 0)  
        {
         var customer = (from c in db.Customers
         where c.Id == (custID == 0 ? c.Id : custID)
         select c).FirstOrDefault();    // .SingleOrDefault(); 

        routes.MapRoute(
                  null,
                  "AAA/Index/{custID}",
                  new { controller = "AAA", action = "Index" }, new { custID = @"\d+" });

去到 URL"/ AAA/索引/0"给出了记录编号 ID = 1在表中,并没有记录的 ID 为 0 不为 null。

我用 SingleOrDefault 和它的错误︰

序列包含多个元素

怎么 FirstOrDefault() ,没有给我默认为空值时的记录 ' custid 的值 = 0' 不应该被发现吗?

解决方法 1:

custID == 0 你的状况看起来像这样︰

where c.Id == c.Id

这显然是对任何记录。 SingleOrDefault 将失败,因为有一个以上, FirstOrDefault 返回第一个。

可能你只是想要︰

where c.Id == custID

或如果你的数据库包含记录 Id 等于 0,但是你不想返回它︰

where custID != 0 && c.Id == custID
赞助商