2010-11-09 18 views
12

que tienen esta consulta LINQ:¿Cómo saber si mi consulta LINQ devuelve null

y cuando intento de hacer esto: listView.ItemsSource = myQuery

que a veces se produce una excepción porque hay hay elementos en myQuery

he intentado muchas formas como: if(myQuery.count!=0) o if(myQuery.Any()) pero nada funcionó, así que ¿cómo puedo determinar si mi consulta devuelto nulo?

+0

¿Qué quiere decir por "nada funcionó"? ¿Qué error obtuvo? ¿Puedes publicar el código que probaste? –

+0

@Guffa dijo correcto, se ha perdido un nombre de tabla. – PrateekSaluja

Respuesta

15

Puede darse cuenta de los resultados como una lista:

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

Ahora puede comprobar el número de elementos:

if (myQuery.Count > 0) ... 

También es posible usar el método Count() en la búsqueda original, pero luego estaría ejecutando la consulta dos veces, una para contar los artículos y una para usarlos.

+0

aquí es mi código exacto – Mouayad

+0

var = myAppointmentsQuery de myApp en DC.Appointments donde (myApp.Appointment_Date == == datePicker_showAppointmentDate.SelectedDate && myApp.Doctor.Name comboBox_showAppointmentsDoctor.SelectedItem.ToString()) { seleccione nuevo myApp.Patient .Name, myApp.Appointment_Time}; si (myAppointmentsQuery.Count()! = 0) { listView_appointmentsList.ItemsSource = myAppointmentsQuery; } – Mouayad

+0

@Mouayad: Eso debería estar funcionando. Sin embargo, debe obtener la entrada de los campos de la IU y validarlos antes de usarlos en la consulta. La entrada no válida es la razón más probable de que el código falle a veces. – Guffa

4

Las consultas de LINQ nunca deben devolver nulo y no debe obtener una excepción si el resultado está vacío. Probablemente tengas un error en tu código.

Parece que al código que ha publicado le falta el nombre de la tabla. ¿Estás seguro de que el código que publicaste es el que te está dando problemas?

+1

creo que está describiendo un caso en el que el resultado es 0 registros llamando más tarde a una lista ToList () en esa consulta arrojaría una excepción. –

+0

@eranotzer: ¿Por qué llamar a ToList arrojaría una excepción? Estoy bastante seguro de que devolvería una lista con cero elementos. –

+0

necesito verificar esto de nuevo, pero recuerdo un caso similar que me sucedió al llamar al ToList genérico () en 0 resultados arrojó una excepción. me pondré en contacto con usted al respecto. –

0

puede probar esta

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

o U puede comprobar, además, que al igual que si hay lista en consecuencia

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

O se puede convertir a la lista y luego comprobar el recuento

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

o puede hacer una comprobación nula ya que de forma predeterminada las consultas linq devuelven nulo en lugar de una lista vacía.

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

mejor enfoque consiste en comprobar allí es nulo (artículos) en la lista utilizar Any() en lugar de la cuenta()

var = myQuery (de Q en myDataContext seleccionar Q.Name) .ToList (); Ahora se puede comprobar el número de artículos:

si (myQuery.Any()) ...

Cuestiones relacionadas