Depuis IEnumerable.Contains()
méthode n'accepte pas un prédicat comme argument, la plupart des gens utilisent le code suivant pour vérifier l'existence de quelque chose correspondant à une condition:Dans Linq, comment trouver si un ensemble contient un élément sans utiliser Count (prédicat)?
// ProductId is unique.
if (Products.Count(c => c.ProductId = 1234) == 1)
{
// Products list contains product 1234.
}
Cette force de code à marcher à travers chaque produit et de vérifier si cela correspond. Il n'y a vraiment pas besoin de le faire. Lorsque vous observez le code SQL généré Linq-to-SQL, le problème est le même. Une instruction select count(*) ... where ProductId = @p0
est envoyée au lieu de if exists
.
Comment Linq peut-il déterminer si un ensemble contient un élément correspondant à une condition, sans devoir parcourir tous les éléments d'un ensemble et compter le nombre de correspondances?
Cela fonctionne. La requête Sql est 'select (cas où existe (...) puis 1 sinon 0 fin)'. Je vous remercie. –