2011-06-21 79 views
1

我在ASP.NET MVC 3,设计一个项目如何在执行集合操作之前检查查询中的结果?

我使用此查询在我的控制器:

int batchSize = (int)db.ProductFormulation 
     .Where(r => r.ProductID == p) 
     .Min(r => r.Quantity); 

p是由用户输入。

当我运行我的项目和用户输入值p这不存在于我的表中,然后发生错误。

我该如何阻止此错误,例如应该创建一个消息框,指出不存在您输入的值的记录,并且我的项目应该连续运行。

请建议我该怎么做。提前致谢。

回答

6

你得到一个错误,因为Min正在一个没有元素的序列上操作。

您基本上在寻找MinOrDefault(),这在LINQ框架中不存在。

This answer对如何实现它有很好的实现。

或者,如果你不想做骨料操作服务器端,你可以先兑现的顺序,然后进行分:

int batchSize = 0; 
var results = db.ProductFormulation.Where(r => r.ProductID == p).ToList(); 

if (results.Count > 0) 
    batchSize = results.Min(x => x.Quantity); 

显然,如果你有很多的记录,以上并不是真的适合,而且你用上述扩展方法更好。

+1

谢谢先生...非常感谢你... –

+0

没有probs mate .. – RPM1984

相关问题