25

我正在查看一些 EF 示例并试图破译在执行 LINQ to Entities 或 EntitySQL 时“查询投影”究竟等同于什么。我相信这是查询结果被过滤并投影为匿名类型但不是 100% 确定的时候。

有人可以对此进行定义,并可能提供一个使用它的示例的小型 L2E 查询吗?

4

1 回答 1

30

投影是查询的结果输出到与查询的类型不同的类型。 另一篇文章将其定义为:转换查询结果的过程

投影可以是匿名类型,但也可以是具体类型。如果您来自 SQL 世界,它类似于您的SELECT子句中列出的列。

将对象的子集选择为具体类型的示例:

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

.
将对象合并为第三种匿名类型的示例:
注意:该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 回答