J'ai une question à propos de la requête LINQ. Normalement, une requête renvoie un type IEnumerable. Si le retour est vide, je ne sais pas si c'est nul ou non. Je ne suis pas sûr si le suivant ToList() lèvera une exception ou juste une liste vide < chaîne > si rien trouvé dans le résultat IEnumerable? Je sais que c'est une question très simple, mais je n'ai pas de VS disponible pour l'instant.Que retourne LINQ lorsque les résultats sont vides?
Répondre
Il renverra un nombre énumérable vide. Ce ne sera pas nul. Vous pouvez dormir le son :)
.ToList retourne une liste vide. (identique à la nouvelle liste());
Il ne lancera pas d'exception, vous obtiendrez une liste vide.
var lst = new List<int>() { 1, 2, 3 };
var ans = lst.Where(i => i > 3);
(ans == null).Dump(); // False
(ans.Count() == 0).Dump(); // True
(Dump est de LinqPad)
Exactement! Vous obtenez une meilleure indication des résultats – netfed
TIL 'Count()' est également une méthode, pas seulement la propriété – heyNow
Ne devriez-vous pas utiliser .Any() car count énumérera tous les éléments? – SHEePYTaGGeRNeP
D'autres messages ici ont clairement fait savoir que le résultat est un « vide » IQueryable qui ToList() va changer correctement être une liste vide etc.
Faites attention avec certains des opérateurs, car ils lanceront si vous leur envoyez une énumération vide. Cela peut arriver quand vous les enchaînez ensemble.
"Faites attention avec certains des opérateurs, car ils lanceront si vous leur envoyez un nombre énumérable vide, ce qui peut arriver quand vous les enchaînez ensemble." - C'est ce qui m'a eu. J'avais une valeur retournée nulle que j'ai ensuite introduite dans une autre requête. Cela a provoqué la deuxième requête à lancer peu importe ce que je l'ai lancé car il n'y avait aucune valeur introduite dans la deuxième requête. – trevorc
dans LINQ to SQL si vous essayez d'obtenir le premier élément sur une requête sans résultats que vous obtiendrez sequence contains no elements
erreur. Je peux vous assurer que l'erreur mentionnée n'est pas égale à object reference not set to an instance of an object
. en guise de conclusion non, il ne reviendra pas nulle puisque nul ne peut dire sequence contains no elements
ce sera toujours dire object reference not set to an instance of an object
;)
Oh, votre explication aide à mieux comprendre. Je vous remercie ! –
Vous pouvez également vérifier la méthode .Any()
:
if (!YourResult.Any())
Juste une note qui sera .Any
toujours récupérer les enregistrements de la base de données; faire un .FirstOrDefault()/.Where()
sera tout autant les frais généraux, mais vous seriez alors en mesure de saisir l'objet (s) est revenu de la requête
Où la question mentionne-t-elle une base de données? – cja
Vous devrez demander à celui qui a édité, je n'ai mentionné aucun DB :) – Noich
L'éditeur de point fait est sain, cependant, DB ou pas. Je crois qu'ils disent '.Any()' va juste vous dire si vous avez des enregistrements correspondants, du tout, où faire une requête réelle pour trouver une valeur spécifique pourrait être nulle quand '.Any()' ne l'est pas. – vapcguy
- 1. vbscript retourne des données vides
- 2. Pourquoi les globals sont-ils vides dans une classe lorsque les variables sont incluses?
- 3. Agréger les résultats LINQ
- 4. liste retourne Linq ou d'un objet unique
- 5. Pourquoi le stockage pour MSMQ est-il plein lorsque les files d'attente elles-mêmes sont vides?
- 6. tables sont vides dans MySQL
- 7. Exécuter le code lorsque les deux zones de texte sont vides
- 8. LINQ IMultipleResults - itérer sur les résultats
- 9. NMBLookup OS X retourne des résultats inconsistants
- 10. est-ce un bon moyen de faire un strcmp pour retourner false lorsque les chaînes sont vides
- 11. Tableau croisé dynamique Les valeurs sont maintenant vides
- 12. Subsonic 3 ActiveRecords Update Les colonnes sales sont toujours vides
- 13. Mettre à jour les attributs sauf s'ils sont vides?
- 14. Que sont les "downargs"?
- 15. Que sont les concepts?
- 16. Que sont les discussions?
- 17. Filtrage des résultats LINQ to DataTable
- 18. Pourquoi les appels retournés par un appel JAX-WS sont-ils toujours vides?
- 19. Agrégation UML lorsque les interfaces sont utilisées
- 20. Que retourne le fichier dojo.query()?
- 21. Comment POSTER des éléments HTML <select .. multiple> vides s'ils sont vides?
- 22. Linq - Comment agréger les résultats d'une autre requête
- 23. Linq/XML: regrouper correctement les résultats dans l'élément XML
- 24. Quels sont tous les résultats des actions ASP.Net MVC?
- 25. LINQ to XML NullReferenceException APRES avoir renvoyé les résultats?
- 26. Résultats LINQ lorsqu'il n'y a pas de correspondance?
- 27. Que retourne-t-il lorsque j'appelle ToString() sur une propriété d'objet char non initialisée?
- 28. Existe-t-il un bon moyen de détecter des résultats vides dans une requête Linq-To-Entities?
- 29. Zend_Filter_Input et les valeurs vides
- 30. LINQ - Ajouter une propriété aux résultats
Je suppose que le résultat est Enumerable.Empty? –