Le résultat d'une expression de requête est un objet de requête, pas les résultats de la requête. Si vous voulez les résultats, vous pouvez demander à l'objet de requête de commencer à présenter des résultats. Autrement dit, quand vous dites:
var names = from c in customers where c.City == "London" select c.Name;
alors des noms est un objet de requête qui représente « me obtenir les noms de tous les clients à Londres ». C'est pas une séquence en mémoire de tous les noms des clients qui vivent à Londres; les résultats de la requête sont calculés à la demande. Ce n'est que lorsque vous dites:
foreach(var name in names) ...
que les résultats réels sont calculés.
Cela signifie que si vous demandez deux fois le même objet de requête pour ses résultats, la réponse peut être différente. La liste des clients peut avoir été modifiée entre la première fois que vous demandez et la deuxième fois que vous demandez. Parce que les requêtes reportent leurs résultats, vous obtenez toujours de nouveaux résultats. Mais vous faites parfois le même travail deux fois.
bas électeur s'il vous plaît fournir le motif de vote down ... Je –