只是免责声明,可能已经有人问过这个问题,但是我真的不知道要搜索什么。
所以基本上我有以下模型:
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 $ 答案 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();