2010-11-09 49 views
12

我有这样的LINQ查询:如何知道我的LINQ查询返回null

,当我尝试这样做: listView.ItemsSource =更改为MyQuery

有时抛出一个异常,因为有在myQuery

我尝试过很多办法一样,没有元素:if(myQuery.count!=0)if(myQuery.Any()) 但是毫无效果,所以我怎么能确定我的查询返回NULL?

+0

你说的意思是“毫无效果”?你得到了什么错误?你能发布你试过的代码吗? – 2010-11-09 10:15:54

+0

@Guffa说对了,你错过了一个表名。 – PrateekSaluja 2010-11-09 10:18:17

回答

15

可以实现的结果以列表:

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

现在,您可以检查的项目数:

if (myQuery.Count > 0) ... 

您也可以使用Count()方法对原始查询,但随后你会运行查询两次,一次计算项目,一次使用它们。

+0

这里是我的确切代码 – Mouayad 2010-11-09 10:30:35

+0

VAR myAppointmentsQuery =从对myApp在DC.Appointments 其中(myApp.Appointment_Date == datePicker_showAppointmentDate.SelectedDate && myApp.Doctor.Name == comboBox_showAppointmentsDoctor.SelectedItem.ToString()) 选择新{myApp.Patient .Name,myApp.Appointment_Time}; (myAppointmentsQuery.Count()!= 0) listView_appointmentsList.ItemsSource = myAppointmentsQuery; } – Mouayad 2010-11-09 10:31:08

+0

@Mouayad:这应该是工作。但是,您应该从UI字段获取输入并在查询中使用它们之前进行验证。输入无效是代码有时会失败的最可能原因。 – Guffa 2010-11-09 11:33:33

4

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

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

+1

我认为他描述的结果是0记录 后来调用ToList ()的情况下,该查询会抛出异常。 – 2012-01-25 21:01:17

+0

@eranotzer:为什么要调用ToList引发异常?我相当肯定它只会返回一个带有零元素的列表。 – 2012-01-26 08:35:28

+0

我需要再次检查, ,但我记得在0结果中调用泛型ToList ()时发生了类似的情况,导致异常。 我会尽快回复您。 – 2012-01-26 13:28:36

0

你可以试试这个

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

或U可以额外检查一样,如果有列表结果

var myQuery = from Q in myDataContext 
if(myQuery != null && myQuery.Count > 0 ) 
{ 
    // TO SOME THING HERE 
} 
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 
} 
0

最好的办法是检查有没有为空(无项目)列表中使用任何()而不是COUNT()

VAR更改为MyQuery =(自Q在myDataContext选择Q.Name).ToList( ); 现在,您可以检查的项目数:

如果(myQuery.Any())...