[英]The query results enumerated more than once
datacontextclass dc=new datacontextclass ();
var news= dc.GetNewsCompany(Int64.Parse ( _idCompany));
if (news.GetEnumerator().MoveNext())
{
foreach (var item in news)
{
drpListNews.Items.Add(item.Title);
}
}
返回錯誤:{“查詢結果不能多次枚舉。”}
如何檢查結果!= LINQ中的null;
瘋狂地使用枚舉器是一個壞主意 - 例如,它需要處理 - 你沒有做過(這可能導致SqlDataReader
被打開 - 不好)。 在這種情況下, 只需枚舉它 。 如果沒有任何記錄,那將是微不足道的:
if (news!=null)
{
foreach (var item in news)
{
drpListNews.Items.Add(item.Title);
}
}
如果您需要兩次數據,請將其放在一個列表中:
var news = (blah).ToList();
您正在創建兩次枚舉器。 第一個是通過調用news.GetEnumerator()
,第二個是在foreach
循環中幕后發生的。 您通過調用MoveNext
進行的第一次“檢查”似乎沒有必要(除非有迭代的項目,否則您不會進入foreach
),所以只需跳過包含循環的if
語句:
datacontextclass dc = new datacontextclass();
var news = dc.GetNewsCompany(Int64.Parse(_idCompany));
foreach (var item in news)
{
drpListNews.Items.Add(item.Title);
}
將代碼的第二行更改為
var news= dc.GetNewsCompany(Int64.Parse ( _idCompany)).toList();
它將刪除該問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.