我有一些.NET 4.5代码:
var result = db.storedProcedure(param)
if (!result.Any()) { return; }
foreach (var entry in result)
{
// Some code...
}
在foreach
处,抛出异常:
The query results cannot be enumerated more than once.
如何检查result
是否为空?我也试过了if (result.Count() == 0)
,并在foreach
循环中抛出相同的异常。我也试过了foreach (var entry in result.ToList())
,这也引发了同样的异常。
我也尝试过:
var result = db.storedProcedure(param)
if (!result.Any()) { return; }
var resultList = result.ToList();
foreach (var entry in resultList) {}
我在foreach
循环中仍然会得到相同的异常。
必须有一些方法可以轻松检查Linq结果集是否为空。我做错了什么?
答案 0 :(得分:7)
在迭代之前将结果放入List:
var result = db.storedProcedure(param).ToList();
if (result.Count == 0) { return; }
答案 1 :(得分:2)
为什么你甚至要进行检查呢?如果result
中没有任何内容,那么你的循环甚至根本无法运行。就这样:
var result = db.storedProcedure(param)
foreach (var entry in result)
{
// Some code...
}
return;