获取实体及其所有满足特定条件的子实体
Get entity with all its child which meet a certain condition
只是免责声明,这可能已经有人问过,但我真的不知道要搜索什么。
所以基本上我有以下模型:
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 美元
虽然我在你的查询中没有看到任何不必要的转换,但如果你想在一行中执行你的请求,你可以尝试以下方法:
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();
只是免责声明,这可能已经有人问过,但我真的不知道要搜索什么。
所以基本上我有以下模型:
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 美元
虽然我在你的查询中没有看到任何不必要的转换,但如果你想在一行中执行你的请求,你可以尝试以下方法:
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();