微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

实体框架 6 - 使用 ICollection<ChildEntities> 获取实体,但仅返回满足子实体中特定条件的实体

如何解决实体框架 6 - 使用 ICollection<ChildEntities> 获取实体,但仅返回满足子实体中特定条件的实体

我想按以下条件过滤

  • 每辆汽车都有N个车轮,每种车轮都有自己的价格
  • 我收到一个请求,其中包含我想在 Car 实体中考虑的 Wheels 类型的数组。
  • 我只想检索在请求的 ID 中包含 WheelsCars,但仅在请求的 ID 发生时返回 Cars成为汽车上最低价格的车轮
  • 基本上我想回答这个问题“给我汽车,它有所要求类型的轮子,但只有当所请求的轮子类型对应于汽车内较低价格的轮子时”。

我的问题是,尽管工作正常,但执行速度太慢。你知道另一种方法吗?

模型 - 汽车和车轮之间的关系是 N 到 N

public class RequestDto
{
    public int IdWheelType { get; set; }
}

public class Car
{
    public int Id { get; set; }
    public ICollection<WheelCar> Wheels { get; set; }
}

public class WheelCar
{
    public int IdCar { get; set; }
    public int IdWheel { get; set; }
    public Car IdCarNavigation { get; set; }
    public Wheel IdWheelNavigation { get; set; }
}

public class Wheel
{
    public int Id { get; set; }
    public int Price{ get; set; } //the best price corresponds to the minimum value
}

查询 -

IQueryable<Cars> carsQuery= _dbContext.Cars;  
    
query = query.Where(x =>
        x.Wheels.Any(y =>
        y.IdWheel== == request.IdWheelType &&
        y.IdWheel== x.Wheels.FirstOrDefault(z => z.IdWheelNavigation.Price== x.Wheels.Min(u => u.IdWheelNavigation.Price)).IdWheel));

// more filters come here,that's why I need an IQueryable<Cars>. 
// I don't mind the content of ICollection<WheelCar> once they have been filtered

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。