使用具有一对多关系的两个表(例如Make - > Model),如何在IQueryable函数中返回Make with limited Model子项?
当我将“camry”作为一个变量传递时,我想回到一个丰田制作中,只有一个名叫“camry”的孩子,而不是所有的孩子。基本上,我想重新创建这个SQL语句:
SELECT
MakeName,
ModelName
FROM
Make
LEFT OUTER JOIN Model ON Model.MakeId = Make.MakeId
WHERE
Model.ModelName = 'camry'
到目前为止,LINQ语句看起来像这样:
return this.ObjectContext.Make
.Include("Model")
.Where(make => make.Model.ModelName.Equals("camry")
这显然在语法上不正确,因为Where子句中的.Model是一个实体集合,并且没有.ModelName属性。
如何限制包含的表格?这在LINQ to Entities中是否可行?
答案 0 :(得分:1)
请注意,这是我的头脑,我没有费心去编译所以有些东西可能有点偏离:
return this.ObjectContext.Make.Include("Model")
.Where(make => make.Models.Any(model => model.ModelName == "camry"))
另请注意,我认为make会有“Models”而不是“Model”
编辑:
我没有正确理解这个问题。这是您想要的查询:
return this.ObjectContext.Model.Include("Make")
.Where(model => model.ModelName == "camry")
答案 1 :(得分:0)
这也应该有效:
from make in ctx.Makes
from model in make.Models
where model.Name == "camry"
select new
{
Make = make,
Model = model
}