У меня есть следующий классC# Как удалить отдельные узлы из списка
public class Item
{
public int Id { get; set; }
public int ParentId { get; set; }
public string Content { get; set; }
public bool IsLastItem { get; set; }
}
Пусть у меня есть следующая модель, и я хочу, чтобы удалить элементы, которые IsLastItem = false
и не имеют детей. В этом случае item4 и item7 должны удалить из списка.
Я получаю список моей модели из базы данных, и я моделируется его в блоке кода, как этот
var items = new List<Item>
{
new Item
{
Id = 1,
ParentId = 0,
Content = "item1",
IsLastItem = false
},
new Item
{
Id = 2,
ParentId = 1,
Content = "item2",
IsLastItem = false
},
new Item
{
Id = 3,
ParentId = 1,
Content = "item3",
IsLastItem = true
},
new Item
{
Id = 4,
ParentId = 1,
Content = "item4",
IsLastItem = false
},
new Item
{
Id = 5,
ParentId = 2,
Content = "item5",
IsLastItem = false
},
new Item
{
Id = 6,
ParentId = 5,
Content = "item6",
IsLastItem = false
},
new Item
{
Id = 7,
ParentId = 5,
Content = "item7",
IsLastItem = false
},
new Item
{
Id = 8,
ParentId = 6,
Content = "item8",
IsLastItem = true
},
new Item
{
Id = 9,
ParentId = 8,
Content = "item9",
IsLastItem = true
}
};
Вы хотите удалить их по id или всем узлам без ребенка? Если вы хотите удалить все узлы без дочернего элемента, почему бы вам не удалить узел 9? – osanger
'var enumerable = items.Where (s =>! S.IsLastItem && items.All (t => t.ParentId! = S.Id)). ToList();' ??? – Aybe
@ MichałZych: пользователи могут создать модель, которая item4 не является последним, но я должен очистить эти узлы. –