我对如何解决这个问题感到困惑。
如果 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 / Index / 0”会在表中给出记录号ID = 1 ,而对于ID为0的记录则不为null。
我使用了SingleOrDefault,它出错:
序列包含多个元素
如果找不到'custID = 0'的记录,FirstOrDefault()
怎么没有给我默认的 null 值?
答案 0 :(得分:4)
custID == 0
你的情况如下:
where c.Id == c.Id
对任何记录来说都是如此。 SingleOrDefault
失败,因为有多个FirstOrDefault
返回第一个。
可能你只想:
where c.Id == custID
或者如果您的数据库包含Id
等于0的记录,但您不想将其返回:
where custID != 0 && c.Id == custID