繁体   English   中英

按属性从递归列表中删除项目

[英]Remove Items from recursive list by property

我有这样的数据结构

public class DomainObject
{
    public List<DomainObject> Children { get; private set; }
    public List<Car> Cars { get; private set; }
}

public class Car 
{
    public bool Sold { get; }
}

所以我的结构相当嵌套,我想删除所有未标记为Sold Car

这是我真正想要的一个例子

List
  DomainObject
    Children
      Car A (Sold)
      Car B (!Sold)
      Car C (Sold)
    Children
      Car D (!Sold)
      Car E (!Sold)
      Car F (Sold)

变成

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循环或结合使用RemoveAlllinq 通过为其中的所有子对象调用自身来结束方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM