LINQ to Entities - 限制包括表格

时间:2010-07-28 19:34:34

标签: c# linq-to-entities iqueryable

使用具有一对多关系的两个表(例如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中是否可行?

2 个答案:

答案 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
}