查询投影在实体框架中的含义是什么?

atc*_*way 23 entity-framework

我正在研究一些EF示例,并试图解决在执行LINQ to Entities或EntitySQL时"查询投影" 究竟等同于什么.我相信,当查询结果被过滤并投射到匿名类型但不是100%肯定时.

有人可以定义这个并且可能提供一个使用它的例子的小型L2E查询吗?

谢谢!

EBa*_*arr 27

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

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

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

ParentObj.Select(x=> new ParentSlim { ParentID = x.ParentID,  Name = x.Name } );
Run Code Online (Sandbox Code Playgroud)

.
将对象合并为第三个匿名类型的示例:
注意:该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()
         }
Run Code Online (Sandbox Code Playgroud)

  • @Amir - 我在哪里说的?我确实看到它在某些情况下如何导致更快的执行。但是,如果您有明确的问题,最好发布问题并让人们充分回应。 (2认同)