繁体   English   中英

在linq to sql存储过程调用中多次枚举

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM