我有 2 个表:POHeader 和 PODetail。我想返回所有具有关联 PODetail.ItemId = intItemId 的 POHeaders。我怎样才能在 LINQ 中做到这一点?
这是我尝试过的。
首先,我的存储库中有一个方法,它使用 Include 参数包含 PODetails:
public IQueryable<POHeader> SearchForWithDetails(int intFacilityId)
{
return DbSet.Include("PODetails").Where(x => x.FacilityId == intFacilityId);
}
然后将结果传递给:
public IQueryable<POHeader> SearchForPODetailsByItemId(IQueryable<POHeader> poHeaders, int intItemId)
{
//This returns a type of PODetail not POHeader
var q = poHeaders.SelectMany(c => c.PODetails).Where(c => c.ItemId == intItemId);
//In this case, I can't figure out the syntax :(
var p = from poHeader in poHeaders
let filteredPOs = from poDetail in poHeader.PODetails
where poDetail.ItemId == intItemId
select ????
return p;
}
这样做的正确方法是什么?
此外,我可以预见需要 2 个结果:
- 只返回一个 IQueryable
- 返回连接表结果。