我有這樣的LINQ查詢:如何知道我的LINQ查詢返回null
,當我嘗試這樣做: listView.ItemsSource =更改爲MyQuery
有時拋出一個異常,因爲有在myQuery
我嘗試過很多辦法一樣,沒有元素:if(myQuery.count!=0)
或if(myQuery.Any())
但是毫無效果,所以我怎麼能確定我的查詢返回NULL?
我有這樣的LINQ查詢:如何知道我的LINQ查詢返回null
,當我嘗試這樣做: listView.ItemsSource =更改爲MyQuery
有時拋出一個異常,因爲有在myQuery
我嘗試過很多辦法一樣,沒有元素:if(myQuery.count!=0)
或if(myQuery.Any())
但是毫無效果,所以我怎麼能確定我的查詢返回NULL?
可以實現的結果以列表:
var myQuery = (from Q in myDataContext select Q.Name).ToList();
現在,您可以檢查的項目數:
if (myQuery.Count > 0) ...
您也可以使用Count()
方法對原始查詢,但隨後你會運行查詢兩次,一次計算項目,一次使用它們。
這裏是我的確切代碼 – Mouayad 2010-11-09 10:30:35
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
@Mouayad:這應該是工作。但是,您應該從UI字段獲取輸入並在查詢中使用它們之前進行驗證。輸入無效是代碼有時會失敗的最可能原因。 – Guffa 2010-11-09 11:33:33
LINQ查詢不應該返回null,如果結果爲空,則不應該得到異常。您的代碼中可能有錯誤。
看起來您發佈的代碼缺少表名。你確定你發佈的代碼是給你帶來問題的代碼嗎?
我認爲他描述的結果是0記錄 後來調用ToList
@eranotzer:爲什麼要調用ToList引發異常?我相當肯定它只會返回一個帶有零元素的列表。 – 2012-01-26 08:35:28
我需要再次檢查, ,但我記得在0結果中調用泛型ToList
你可以試試這個
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
}
要麼你可以將其轉換爲列表,然後檢查計數
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
}
最好的辦法是檢查有沒有爲空(無項目)列表中使用任何()而不是COUNT()
VAR更改爲MyQuery =(自Q在myDataContext選擇Q.Name).ToList( ); 現在,您可以檢查的項目數:
如果(myQuery.Any())...
你說的意思是「毫無效果」?你得到了什麼錯誤?你能發佈你試過的代碼嗎? – 2010-11-09 10:15:54
@Guffa說對了,你錯過了一個表名。 – PrateekSaluja 2010-11-09 10:18:17