Il y a une belle explication par Matt Warren, à La Teigne:
"La raison en C# a le mot "égal" au lieu de ‘==' opérateur est de bien faire comprendre que le " on " de la clause du besoin de vous pour la fourniture de deux expressions distinctes, qui sont comparées pour l'égalité, pas une seule expression de prédicat. De rejoindre les motifs à l'Énumérable.Join() la norme d'opérateur de requête qui spécifie deux délégués qui sont utilisées pour calculer des valeurs qui peuvent ensuite être comparées. Il a besoin d'eux comme distinct des délégués dans le but de construire une table de correspondance avec l'un et d'une sonde dans la table de recherche avec les autres. Une requête complète de traitement de texte tel SQL est libre d'examiner un seul prédicat d'expression et de choisir la façon dont il va traiter. Pourtant, pour faire LINQ de fonctionnement similaire à SQL exigerait que la condition de jointure toujours être spécifié comme une expression de l'arbre, une surcharge importante pour la simple objet en mémoire de cas."
Cependant, il s'agit d' join
. Je ne suis pas sûr d' equals
doit être utilisé dans votre exemple de code (c'est aussi le compiler?).