EDIT: LINQ to Objects ne se comportent pas de la façon dont je l'avais prévu. Vous pourriez bien être intéressé par le blog , j'ai juste écrit à ce sujet...
Ils sont différents en termes de ce qui sera appelé - la première est équivalente à:
Collection.Where(x => x.Age == 10)
.Where(x => x.Name == "Fido")
.Where(x => x.Fat == true)
wheras ce dernier est équivalent à:
Collection.Where(x => x.Age == 10 &&
x.Name == "Fido" &&
x.Fat == true)
Maintenant, quelle est la différence qui fait dépendre de la mise en œuvre de l' Where
de la demande. Si c'est une base SQL fournisseur, je m'attends à les deux de créer le même SQL. Si c'est dans LINQ to Objects, le deuxième aura moins de niveaux d'indirection (il y a juste deux itérateurs impliqués au lieu de quatre). Si ces niveaux d'indirection sont importants en termes de vitesse est une autre affaire.
Généralement je voudrais utiliser plusieurs where
clauses si ils se sentent comme ils représentent significativement différentes conditions (par exemple, l'un est de le faire avec une partie d'un objet, et on est complètement séparé) et un where
clause lors de diverses conditions sont étroitement liées (par exemple, la valeur est supérieure à un minimum et de moins de un maximum). Fondamentalement, il est utile de considérer la lisibilité avant tout une légère différence de performances.