25

私はいくつかのEFの例を見て、エンティティまたはEntitySQLに対してLINQを実行するときに「クエリプロジェクション」が正確に何に相当するかを解読しようとしています。クエリ結果がフィルタリングされて匿名タイプに投影されるときだと思いますが、100%確実ではありません。

誰かがこれを定義して、その例を使用する小さなL2Eクエリを提供できますか?

4

1 に答える 1

30

射影とは、クエリの結果が、クエリされたタイプとは異なるタイプに出力される場合です。 別の記事はそれを次のように定義しました:クエリの結果を変換するプロセス

投影は匿名タイプにすることもできますが、具体的なタイプにすることもできます。SQLの世界から来た場合、それはSELECT句にリストされている列に似ています。

オブジェクトのサブセットを具体的なタイプに選択する例:

ParentObj.Select(x=> new ParentSlim { ParentID = x.ParentID,  Name = x.Name } );


オブジェクトを3番目の匿名タイプにマージする例:
注:select new一部は投影です。

from P in ParentObj.AsQueryable()
join C in ChildObj.AsQueryable() on P.ParentID == C.ParentID

select new {                              // <-- look ma, i'm projecting!
               ParentID = P.ParentID,
               Name     = P.Name,
               SubName  = C.Name
               RandomDate = DateTime.UtcNow()
         }
于 2012-06-01T21:43:31.340 に答える