Удалить элементы из рекурсивного списка по свойству - PullRequest
0 голосов
/ 15 марта 2019

У меня есть такая структура данных

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

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

Итак, моя структура довольно вложенная, и я хочу удалить все Car, которые не помечены как Sold.

Вот пример того, что я на самом деле хочу

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

Ответы [ 2 ]

2 голосов
/ 15 марта 2019

Рекурсивная функция должна это делать.

public void RemoveNonSoldCars(DomainObject parent)
{
    parent.Cars.RemoveAll(x => !x.Sold);
    foreach (var item in parent.Children)
        RemoveNonSoldCars(item);
}
1 голос
/ 15 марта 2019

Создайте метод, который принимает DomainObject, а затем удаляет все непроданные автомобили из их переменной Cars.Это можно сделать с помощью обратной петли for или RemoveAll с linq.Завершите метод, вызвав себя для всех дочерних объектов в нем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...