我正在使用存储库和工作单元模式与实体框架5
我想通过“汽车”获得所有“代理商”,但只有那些在参数发送的列表中有id且属于参数发送状态的汽车。
例如
public IEnumerable<Agency> GetList(int stateId, string idCarList)
var ids = idTiposTarjetasList.Split(',');
var intIds = ids.Select(int.Parse);
然后我
Uow.Agencies.GetAll()
和
Uow.Agencies.GetAllIncluding(a => a.Cars)
检索IQueryable&lt; T&gt;
无论如何,我可以在一个查询中检索包含其汽车的代理商,但只检索那些在intIds列表和stateId匹配stateId参数中包含id的代理商?
我已经看过这个Stackoverflow question了,但是IQueryable的检索让我感到很麻烦。
如果我写这个 var sortedList =来自Uow.Agencies.GetAllIncluding中的x(c =&gt; c.Cars) 然后无法完成选择(无法从查询中推断出参数
这不起作用:
var ids = idCars.Split(',');
var intIds = ids.Select(int.Parse);
var agencies = from agency in
Uow.Agencies.GetAllIncluding(c => c.Cars).Where(c => intIds.Contains(c.Cars.Id)).OrderBy(s => s.Id)
select agency;
if (agencies.Any())
{
return agencies;
}
我该怎么办? 谢谢!吉列尔莫。
答案 0 :(得分:0)
您无法获取具有部分加载集合的对象(至少不能在一个语句中)。因此,您必须创建一个包含agent
对象和所选汽车的类型:
var agencies = from agency in Uow.Agencies.GetAll()
select new { Agency = agency,
Cars = agency.Cars.Where(c => intIds.Contains(c.Id))
};