![](/img/trans.png)
[英]The Result of a Query Cannot be Enumerated More than Once (C#) (Entity Framework) (Stored Procedure)
[英]enumerated more than once in linq to sql stored procedure call
我正在通过linq调用存储过程到sql。
var qlist = dbc.GetInfoByIDandDate(ID, aDate); //sp call
if (qlist.Count() == 0)
{
// error msg
}
else if (qlist.Count() > 1)
{
// A different Error msg.
}
else
{
GetInfoByIDandDateResult res = (GetInfoByIDandDateResult) qlist.First();
string x = res.fieldXname; // this is a field in the result set.
... and so on.
}
我已经尝试过各种化身,但总是会出错。 此迭代的错误是“查询结果不能被多次枚举”。
处理此问题的正确方法是什么?
当您调用Count()和First()时,实际上每次都在枚举。
我猜这可以解决问题:
var qlist = dbc.GetInfoByIDandDate(ID, aDate).ToList();
或者,甚至更聪明:
var qlist = dbc.GetInfoByIDandDate(ID, aDate).Take(2).ToList();
请注意,ToList()缓存结果,以便Count()和First()不会再次运行查询。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.