我正在查看一些EF示例,并试图解释当使用LINQ to Entities或EntitySQL时,“查询投影”确切地等同于什么。我认为它是指将查询结果过滤并投射到匿名类型中,但并不确定。
请问能否有人给出定义,并可能提供一个使用此功能的小型L2E查询示例?
请问能否有人给出定义,并可能提供一个使用此功能的小型L2E查询示例?
投影是指将查询结果输出到不同于查询类型的类型中。另一篇文章将其定义为:转换查询结果的过程。这里有另一篇相关文章。
投影可以是匿名类型,也可以是具体类型。如果你来自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()
}