问题描述
我想按以下条件过滤
- 每辆汽车都有N个车轮,每种车轮都有自己的价格
- 我收到一个请求,其中包含我想在 Car 实体中考虑的 Wheels 类型的数组。
- 我只想检索在请求的 ID 中包含 Wheels 的 Cars,但仅在请求的 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 (将#修改为@)