1

外部結合を使用したLINQtoEntityクエリを指定します...

var query = from items in entityDb.TableName
         join requestedBy in entityDb.People on items.RequestedById equals requestedBy.PersonId into requestedByOuter
         from requestedBy in requestedByOuter.DefaultIfEmpty()
         select items;

そのような外部結合のコンパイル済み(Lamba式)バージョンはどのように見えますか?Visual Studioデバッガーでこれを確認する方法はありますか?

更新
明確にするために、Jon Skeetは彼のの中で、クエリ式は「実際のコンパイル」を行う前に通常のC#コードに「コンパイラ変換」されると説明しています。私の質問は、外部結合の場合、クエリ式は実際のC#にどのように変換されるのですか?そして、これらの変換をデバッガーまたは他の手段で確認できますか?

4

1 に答える 1

1

次のステートメント:

from u in TblUsers
join c in TblCompanies on u.FkCompanyID equals c.PkCompanyID into g
from x in g.DefaultIfEmpty()
select u

このランバ式が生成されます(優れたアプリケーションLINQPadによると):

TblUsers
   .GroupJoin (
      TblCompanies, 
      u => u.FkCompanyID, 
      c => c.PkCompanyID, 
      (u, g) => 
         new  
         {
            u = u, 
            g = g
         }
   )
   .SelectMany (
      temp0 => temp0.g.DefaultIfEmpty (), 
      (temp0, x) => temp0.u
   )
于 2012-08-06T16:50:02.370 に答える