从表中获取另一个表中字段的给定条件的对象

时间:2013-12-10 15:35:50

标签: linq

假设我有两张桌子。第一个是ModelsIdMachineTypeBrandIdModelName列,第二个表是Brands Id }和BrandName列。

我需要为我的存储库编写一个方法,该方法返回给定MachineType的所有品牌。如果我在Brands表中有一个MachineType列,那就非常简单了:

    public IEnumerable<Brand> GetBrandByType(MachineTypeEnum type)
    {
        return _context.Brands.Where(x => x.MachineType == type).AsEnumerable();
    }

但是我的情况怎么办呢?

1 个答案:

答案 0 :(得分:2)

如果您在实体上定义了导航属性:

_context.Brands.Where(b => b.Models.Any(m => m.MachineType == type))
        .AsEnumerable();

否则

from b in _context.Brands
join m in _context.Models
     on b.Id equals m.BrandId into g   
where g.Any(m => m.MachineType == type)
select b