188 votes

Comment faire une jointure dans linq to sql avec la syntaxe de la méthode ?

J’ai vu beaucoup d’exemples dans LINQ pour des exemples sur comment faire une jointure SQL syntaxe de requête, mais je me demande comment le faire avec la méthode synatx ? Par exemple comment pourrais je faire ce qui suit :

Avec un `` ? Un autre exemple simple, peut quelqu'un donner illustrer ou fournisseur ?

272voto

Justin Niessner Points 144953
<pre><code></code><p>Équivaudrait à :</p><pre><code></code></pre><p>Comme vous pouvez le voir, en ce qui concerne les jointures, la syntaxe de requête est habituellement beaucoup plus lisible que la syntaxe lambda. </p></pre>

125voto

Jon Skeet Points 692016

Justin a bien montré l'expansion dans le cas où la jointure est suivi par un select. Si vous avez quelque chose d'autre, il devient de plus en plus difficile à cause transparent identificateurs - le mécanisme le compilateur C# utilise pour propager le champ d'application des deux moitiés de la rejoindre.

Donc pour modifier Justin exemple légèrement:

var result = from sc in enumerableOfSomeClass
             join soc in enumerableOfSomeOtherClass
             on sc.Property1 equals soc.Property2
             where sc.X + sc.Y == 10
             select new { SomeClass = sc, SomeOtherClass = soc }

serait transformé en quelque chose comme ceci:

var result = enumerableOfSomeClass
    .Join(enumerableOfSomeOtherClass,
          sc => sc.Property1,
          soc => soc.Property2,
          (sc, soc) => new { sc, soc })
    .Where(z => z.sc.X + z.sc.Y == 10)
    .Select(z => new { SomeClass = z.sc, SomeOtherClass = z.soc });

L' z voici les transparents de l'identificateur - mais parce que c'est la transparence, vous ne pouvez pas le voir dans la requête d'origine :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X