C# 按属性从递归列表中删除项
我有一个这样的数据结构C# 按属性从递归列表中删除项,c#,list,linq,C#,List,Linq,我有一个这样的数据结构 public class DomainObject { public List<DomainObject> Children { get; private set; } public List<Car> Cars { get; private set; } } public class Car { public bool Sold { get; } } 变成 List DomainObject Childr
public class DomainObject
{
public List<DomainObject> Children { get; private set; }
public List<Car> Cars { get; private set; }
}
public class Car
{
public bool Sold { get; }
}
变成
List
DomainObject
Children
Car A
Car C
Children
Car F
递归函数应该能做到这一点
public void RemoveNonSoldCars(DomainObject parent)
{
parent.Cars.RemoveAll(x => !x.Sold);
foreach (var item in parent.Children)
RemoveNonSoldCars(item);
}
创建一个方法,该方法接受
DomainObject
,然后从cars
变量中删除所有未售出的汽车。这可以通过反向for
循环或使用RemoveAll
与linq
实现。通过调用方法中的所有子对象来结束该方法。寻求调试帮助的问题(“此代码为什么不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现该方法所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。
public void RemoveNonSoldCars(DomainObject parent)
{
parent.Cars.RemoveAll(x => !x.Sold);
foreach (var item in parent.Children)
RemoveNonSoldCars(item);
}