如何在执行聚合操作之前检查查询结果?

Pus*_*tal 1 linq asp.net-mvc asp.net-mvc-3 asp.net-mvc-2

我正在ASP.NET MVC 3上设计一个项目.

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

int batchSize = (int)db.ProductFormulation
         .Where(r => r.ProductID == p)
         .Min(r => r.Quantity);
Run Code Online (Sandbox Code Playgroud)

其中p由用户输入.

当我运行我的项目并且用户输入我的表中不存在的p值时,则会发生错误.

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

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

RPM*_*984 6

您收到错误是因为Min在没有元素的序列上操作.

你基本上在寻找MinOrDefault(),这在LINQ框架中是不存在的.

这个答案有很好的实现方法.

或者,如果您不想在服务器端执行聚合操作,则可以首先实现序列,然后执行min:

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

if (results.Count > 0)
   batchSize = results.Min(x => x.Quantity);
Run Code Online (Sandbox Code Playgroud)

显然,如果你有很多记录,上面的内容并不合适,你最好使用上面提到的扩展方法.