J'ai un iquisable et j'ai besoin de savoir s'il est nul ou n'a aucune valeur.
IQueryable<people> L = (from p in people
where p.lastname.Contains("y")
select p);
if (L != null && L.Count() > 0) {
return "Something";
} else {
return "NOTHING";
}
4 Réponses :
Il est recommandé d'utiliser . Nan () code>. IQueryable<people> L = (from p in people
where p.lastname.Contains("y")
select p);
if (L.Any()) {
return "Something";
} else {
return "NOTHING";
}
Nous avons effectué la comparaison de code et .Count code> vs . Nan code> étaient presque identiques. Mais j'aime bien le code> mieux. Je n'ai pas vérifié comment SQL y traite, mais je peux le faire plus tard. Merci!
Dans le cas où l'énumérable est vide ou n'a qu'une ou deux valeurs, ou lorsque la méthode est appliquée directement sur une source iEnumerable qui est également identifiable comme une iCollection ou une matrice (et ayant ainsi une propriété de comptage ou de longueur), compte ( ) jouera à peu près la même chose que tout (). Où tout () brille vraiment est dans de longues collections; Tout () fonctionne constamment (O (1)), tandis que le nombre () fonctionne de manière linéaire (O (n)). Les deux sont "rapides" par la plupart des mesures algorithmiques, mais tout () plus vite.
LINQ à SQL, cadre d'entité et récents fournisseurs de NHibernate Tous gérer tout code> de manière spéciale et performante. Vous pouvez voir un exemple de ce qu'il génère en utilisant Linqpad. Plutôt cool.
Performance de Linq Toute vs FirstOrdefault! = null p>
Cela vaut la peine de dire que certaines choses dépendent de votre fournisseur. Iquéryable implique juste une intention. Si c'est linq2sql ou quelque chose, oui l.Count () demandera plus de ressources - sauf que vous appelez également SingleEfault dans la ligne ci-dessus, ce qui signifie que votre chèque NULL est tout ce dont vous avez besoin, mais vos types ne correspondent pas ... P >
Si j'exécute cette déclaration contre un fournisseur LINQ, je vous écris (ou des Amazones, ou tout autre fournisseur de Linq) .Count () pourrait être plus rapide em> en fonction de ce que le fournisseur fait, mais Vos hypothèses contiennent si vous utilisez les implémentations habituelles Microsoft Linq vers SQL. P> l.any () code>, l.firstordefault () code> sera à peu près la même performance qu'ils ont presque identique à la mise en œuvre et sont probablement ce que vous recherchez . Votre SingleEfault est probablement involontaire car il organisera une exception s'il y a plus d'un résultat. P>
Un exemple d'utilisation de la méthode. Nany Ceci est un exemple qui retournerait une iquérissable si le. Nany revient vrai, mais cela pourrait être trop inefficace car il nécessite deux voyages ronds. à la base de données. Je suis sûr qu'une meilleure méthode pourrait être écrite, étant donné assez de temps et de pensée. P>
Est-ce que je doit être iquéryable <>? de em> est célibatairefault () ce que vous Voulez-vous utiliser ou voulez-vous dire FirstAdefault () ou voulez-vous dire? P> Peut-être LINQ: Quand utiliser SIMOREFAULT VS. DE FRESTEDEFAULT () avec des critères de filtrage peut aider. P> HTH,
En utilisant SO2ODEFAULAULAULLAULT (), il s'agira d'un peuple célibataire (personne?) Ou NULL (supposer que les gens est une classe)
Alan. P> P>
Si vous appelez
SIMOREFAULT code>, comment peut-onl code> être uniquéryable code>? Vous êtes correct, je n'avais pas
.Singleordfault code> dans mon code. Veuillez éditer cela dans votre esprit.Vous pouvez modifier votre question en cliquant sur le modifier le lien ci-dessous de votre question.