2010-11-09 50 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())...