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;
答案 0 :(得分:6)
使用枚举器是一个坏主意 - 例如,它需要处理 - 你没有做过(这可能导致SqlDataReader
被打开 - 不好)。在这种情况下,只是枚举它。如果没有任何记录,那将是微不足道的:
if (news!=null)
{
foreach (var item in news)
{
drpListNews.Items.Add(item.Title);
}
}
如果您需要两次数据,请将其放在一个列表中:
var news = (blah).ToList();
答案 1 :(得分:2)
您正在创建两次枚举器。第一个是通过调用news.GetEnumerator()
,第二个是在foreach
循环的幕后发生的。通过调用MoveNext
进行的第一次“检查”似乎没有必要(除非有要迭代的项目,否则不会进入foreach
),所以只需跳过{{1}包装循环的语句:
if
答案 2 :(得分:1)
将代码的第二行更改为
var news= dc.GetNewsCompany(Int64.Parse ( _idCompany)).toList();
它将删除该问题。