comment savoir si ma requête linq retourne null
J'ai cette requête linq :
var myQuery = from Q in myDataContext
select Q.Name
et quand j'essaie de faire ceci :
listView.ItemsSource = myQuery
il parfois, déclenche une exception car il n'y a pas d'éléments dans myQuery
J'ai essayé de nombreuses façons comme : if(myQuery.count!=0)
ou if(myQuery.Any())
mais rien n'a fonctionné , alors comment puis-je savoir si ma Requête renvoie null ?
Qu'entendez-vous par "rien n'a fonctionné"? Quelle erreur avez-vous? Pouvez-vous poster le code que vous avez essayé?
dit de droite, vous avez manqué un nom de table.
dit de droite, vous avez manqué un nom de table.
OriginalL'auteur Mouayad | 2010-11-09
Vous devez vous connecter pour publier un commentaire.
Vous pouvez réaliser le résultat sous forme de liste:
Maintenant, vous pouvez vérifier le nombre de postes:
Vous pouvez également utiliser la
Count()
méthode sur la requête d'origine, mais alors vous seriez en exécution de la requête, une fois pour compter les éléments, et une fois à les utiliser.var myAppointmentsQuery = à partir de myApp dans DC.Les rendez-vous où (myApp.Appointment_Date == datePicker_showAppointmentDate.SelectedDate && myApp.Médecin.Nom == comboBox_showAppointmentsDoctor.SelectedItem.ToString()) select new { myApp.Patient.Nom, myApp.Appointment_Time }; si (myAppointmentsQuery.Count()!=0) { listView_appointmentsList.ItemsSource = myAppointmentsQuery; }
Que devrait être le travail. Vous devez toutefois obtenir l'entrée dans le champs de l'INTERFACE utilisateur et de les valider avant de les utiliser dans la requête. L'entrée non valide est la raison la plus probable que le code s'échouent parfois.
Pourriez-vous utiliser myQuery.() Au lieu de myQuery.Count>0 ?
Oui, mais ce serait juste un détour pour faire la même chose.
OriginalL'auteur Guffa
Requêtes LINQ ne devrait jamais retourner la valeur null et vous ne devriez pas être une exception si le résultat est vide. Vous avez probablement une erreur dans votre code.
Il ressemble au code que vous avez posté manque le nom de la table. Êtes-vous sûr que le code que vous avez posté est le code qui vous donne des problèmes?
Pourquoi appeler ToList lever une exception? Je suis presque certain qu'il serait juste de renvoyer une liste avec zéro éléments.
j'ai besoin de vérifier cela de nouveau , mais je me souviens d'un cas similaire qui m'est arrivé lors de l'appel du générique ToList<T>() sur 0 résultats ont jeté une exception. je vais revenir à vous sur la question.
OriginalL'auteur Mark Byers
Soit vous pouvez le convertir en liste, puis vérifier le décompte
ou vous pouvez faire un null cochez la case par défaut, les requêtes linq retourner la valeur null au lieu d'une liste vide.
OriginalL'auteur Mayur Dhingra
vous pouvez essayer ce
ou u peut en outre vérifier que si il y a la liste de résultat
OriginalL'auteur Singleton
Meilleure approche est de vérifier qu'il n'y est nulle(pas d'éléments dans la liste, utilisez Tout() au lieu de count()
var myQuery = (à partir de Q en myDataContext sélectionnez Q. Nom).ToList();
Maintenant, vous pouvez vérifier le nombre de postes:
si (myQuery.()) ...
OriginalL'auteur RajeshVerma