Nat*_*ugg 1 linq linq-to-entities
我想做的事似乎很简单.我想选择一些雇主,我想要包括按年和季度降序排序的最后6个季度数据记录.
考虑表达式:
var query = from e in data.Employer.Include("EmployerQuarterly")
where e.UIAccount == 22
select e;
Run Code Online (Sandbox Code Playgroud)
我走在正确的轨道上,因为我获得了我想要的7个雇主记录,并且每个记录都包含所有季度数据.现在我所要做的就是订购数据并只选择前6条记录.
此表达式通过但不限制6来完成订单.
var query = from e in data.Employer.Include("EmployerQuarterly")
from q in e.EmployerQuarterly
where e.UIAccount == 22
orderby q.Year descending, q.Quarter descending
select e;
Run Code Online (Sandbox Code Playgroud)
上面的查询也有两个不希望的副作用.我现在回来了208条记录,而不是原来的7条记录,而且我不再找回任何雇主季度数据!
我不想牺牲我急切的装载.我对L2E的要求是什么?
您不能限制关系,因为EF不会加载部分实现的实体.因此,如果要加载相关数据的子集,则需要投影到POCO而不是加载实体.即:
var query = from e in data.Employer
where e.UIAccount == 22
select new
{
Id = e.Id,
Name = e.Name,
// etc.
Quarterlies = (from q in e.EmployerQuarterly
orderby q.Year descending, q.Quarter descending
select new
{
Id = q.Id,
// etc.
}).Take(6)
};
Run Code Online (Sandbox Code Playgroud)
因为你在预测,你不再需要了Include().
| 归档时间: |
|
| 查看次数: |
5030 次 |
| 最近记录: |