如何知道我的linq查询是否返回null

时间:2010-11-09 10:12:39

标签: c# .net wpf linq

我有这个linq查询:

var myQuery = from Q in myDataContext
          select Q.Name

当我尝试这样做时:     listView.ItemsSource = myQuery

它有时会引发异常,因为myQuery

中没有元素

我尝试了很多方法:if(myQuery.count!=0)if(myQuery.Any()) 但没有任何效果,那么如何判断我的Query是否返回null?

5 个答案:

答案 0 :(得分:17)

您可以将结果视为列表:

var myQuery = (from Q in myDataContext select Q.Name).ToList();

现在您可以检查项目数量:

if (myQuery.Count > 0) ...

您还可以在原始查询中使用Count()方法,但之后您将运行查询两次,一次计算项目,一次使用它们。

答案 1 :(得分:4)

LINQ查询永远不应返回null,如果结果为空,则不应该出现异常。您的代码可能有错误。

看起来您发布的代码缺少表名。你确定你发布的代码是给你问题的代码吗?

答案 2 :(得分:2)

您可以将其转换为列表,然后检查计数

var result = (from Q in myDataContext select Q.Name).ToList();
if(result.Count > 0)
{
 // Perform some operation
}

或者您可以进行空检查,因为默认情况下,linq查询返回null而不是空列表。

var result = (from Q in myDataContext select Q.Name);
if(result != null)
{
 // Perform some operation
}

答案 3 :(得分:0)

你可以试试这个

var myQuery = from Q in myDataContext
if(myQuery != null ) 
{
  // TO SOME THING HERE
}

或者您可以另外检查,如果结果中有列表

var myQuery = from Q in myDataContext
if(myQuery != null && myQuery.Count > 0  ) 
{
  // TO SOME THING HERE
}

答案 4 :(得分:0)

最好的方法是检查列表中是否为空(没有项目)使用Any()而不是count()

var myQuery =(来自myDataContext中的Q选择Q.Name).ToList(); 现在您可以检查项目数:

if(myQuery.Any())...