获取满足所有条件的所有子实体

时间:2019-09-22 12:30:35

标签: c# performance linq linq-to-sql entity-framework-core

只是免责声明,可能已经有人问过这个问题,但是我真的不知道要搜索什么。

所以基本上我有以下模型:

public class Car
{
    public int Id { get; set; }

    public string UniqueName { get; set; }

    public List<Feature> Features { get; set; }
}

public class Feature
{
    public int Id { get; set; }

    public string Name { get; set; }

    public decimal Price { get; set; }
}

让我们说我想买一辆UniqueName等于Bentle,但只有Features且价格低于100美元的汽车。

我可以做这样的事情:

var car = DbContext.Cars.FirstOrDefault(x=> x.UniqueName == "Bentle");
car.Features = car.Features.Where(x=> x.Price <= 100).ToList();

这确实有效,但是在我看来,这是许多不必要的转换。有什么办法可以缩短查询时间?

一些要求:

  • 我需要Car实体本身
  • Features的列表中仅包含Features,其价格低于100 $

1 个答案:

答案 0 :(得分:1)

尽管我在查询中没有看到任何不必要的转换,但是如果您想在一行中执行请求,可以尝试以下操作:

var car = DbContext.Cars.Where(x=> x.UniqueName == "Bentle").Select(car =>
          new Car()
          { 
            Features = car.Features.Where(x=> x.Price <= 100),
            .
            .
            /*here copy the remaining properties of car object*/
          }).FirstOrDefault();