如何解决实体框架 6 - 使用 ICollection<ChildEntities> 获取实体,但仅返回满足子实体中特定条件的实体
我想按以下条件过滤
- 每辆汽车都有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 举报,一经查实,本站将立刻删除。