我通过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.
}
我尝试了各种各样的化身,但总是出错。 此迭代的错误是"查询结果不能多次枚举。"
处理此问题的正确方法是什么?
答案 0 :(得分:2)
当您调用Count()和First()时,实际上每次都在枚举。
我猜这可以解决问题:
var qlist = dbc.GetInfoByIDandDate(ID, aDate).ToList();
或者,甚至更聪明:
var qlist = dbc.GetInfoByIDandDate(ID, aDate).Take(2).ToList();
请注意,ToList()会缓存结果,以便Count()和First()不会再次运行查询。