我正在ASP.NET MVC 3上设计一个项目。
我在我的控制器中使用此查询:
int batchSize = (int)db.ProductFormulation
.Where(r => r.ProductID == p)
.Min(r => r.Quantity);
用户输入 p 的位置。
当我运行我的项目并且用户输入 p 的值时,我的表中不存在,则会发生错误。
如何停止此错误,例如应创建一个消息框,指出您输入的值不存在记录,并且我的项目应该连续运行。
请建议我该怎么做。提前谢谢。
答案 0 :(得分:6)
您收到错误,因为Min
正在没有元素的序列上运行。
你基本上在寻找MinOrDefault()
,这在LINQ框架中是不存在的。
This answer有很好的实现方法。
或者,如果您不想在服务器端进行聚合操作,则可以首先实现序列,然后执行min:
int batchSize = 0;
var results = db.ProductFormulation.Where(r => r.ProductID == p).ToList();
if (results.Count > 0)
batchSize = results.Min(x => x.Quantity);
显然,如果你有很多记录,上面的内容并不合适,你最好使用上述扩展方法。