Entity Framework中的查询投影是什么意思?

25
我正在查看一些EF示例,并试图解释当使用LINQ to Entities或EntitySQL时,“查询投影”确切地等同于什么。我认为它是指将查询结果过滤并投射到匿名类型中,但并不确定。
请问能否有人给出定义,并可能提供一个使用此功能的小型L2E查询示例?
1个回答

31

投影是指将查询结果输出到不同于查询类型的类型中。另一篇文章将其定义为:转换查询结果的过程这里有另一篇相关文章。

投影可以是匿名类型,也可以是具体类型。如果你来自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()
         }

同意,我喜欢那个人的写作。 - EBarr
@EBarr:查询投影可以改善在 SQL Server 上的索引吗?如何实现? - Amir
2
@Amir - 我说过吗?我可以看出在某些情况下这可能会导致更快的执行。但是,如果你有具体的问题,最好是发布问题并允许人们完全回答。 - EBarr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接