簡體   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