0

我将存储库和工作单元模式与 Entity Framework 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< T >

无论如何,我是否可以在一个查询中检索包含其 Cars 的机构,但只有那些在 intIds 列表中包含 id 且 stateId 与 stateId 参数匹配的机构?

我已经看过这个Stackoverflow question,但是 IQueryable 的检索让我很难让它工作。

如果我在 Uow.Agencies.GetAllIncluding(c => c.Cars) 中写这个 var sortedList = from x 则无法完成选择(表示无法从查询中推断出参数

这不起作用:

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;
}

我该怎么做?谢谢!吉列尔莫。

4

1 回答 1

0

您无法使用部分加载的集合获取对象(至少,不是在一个语句中)。因此,您必须分别创建一个包含agent对象和选定汽车的类型:

var agencies =  from agency in Uow.Agencies.GetAll()
                select new { Agency = agency,
                             Cars = agency.Cars.Where(c => intIds.Contains(c.Id))
                           };
于 2012-11-20T22:48:49.027 回答