实体框架 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 (将#修改为@)