Skip to main content
 首页 » 编程设计

c#之使用 LINQ 筛选嵌套集合并返回主对象

2024年01月31日24傻小

我有以下两个类(数据库对象):

class Person 
{ 
    public int Id; 
    public List<Car> CarsOwned; 
} 
 
class Car 
{ 
    public string Name; 
} 

我希望能够搜索 ID 为 1 的人,并返回此人拥有的所有名称为 ford 和 ferrari 的汽车。我想要返回 person 对象。

我目前拥有的:

List<string> carsFilter = new List<string>(); 
carsFilter.Add("Ford"); 
carsFilter.Add("Ferrari"); 
 
person.Where(x => x.Id == 1).CarsOwned.Where(y => carsFilter.Contains(y.Name)); 

如何返回 person 对象而不是 Cars 对象? (Person 是一个 IQueryable,如果可能的话,我希望查询在一个数据库事务中完成)

请您参考如下方法:

person.Where(x => x.Id == 1 && CarsOwned.Any(c => carsFilter.Contains(y.Name)));