我正在研究一些EF示例,并尝试在执行LINQ to Entities或EntitySQL时,将“查询投影”完全等同于什么。我相信这是在查询结果被过滤并投射到匿名类型但不是100%肯定的时候。
有人可以定义这个并且可能提供一个使用它的示例的小型L2E查询吗?
谢谢!
答案 0 :(得分:21)
投影是指将查询结果输出到与查询结果不同的类型。 Another article将其定义为:转换查询结果的过程
投影可以是匿名类型,但也可以是具体类型。如果您来自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()
}