Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 按属性从递归列表中删除项_C#_List_Linq - Fatal编程技术网

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);
}