我有:物品清單。此串列中的每個專案都可以有自己的具有相同結構的串列。此串列的深度可以有條件地不受限制。
我需要:讓專案 ID 串列洗掉任何專案,而不會浪費大量時間
專案結構看起來像這樣,但它不是最終的,如果需要我可以更改它
public class NavigationPath
{
public int Id { get; set; }
public string Name { get; set; }
public string Value { get; set; }
public List<NavigationPath> Childs { get; set; }
}

uj5u.com熱心網友回復:
對于您給定的資料結構,以下方法是最快的。將其添加到您的班級NavigationPath
public void Remove(int id)
{
for (int i = 0; i < Childs.Count; i )
{
if (Childs[i].Id == id)
{
Childs.RemoveAt(i);
i--;
}
else
{
Childs[i].Remove(id);
}
}
}
如果洗掉速度如此重要,那么另一個想法是使用LinkedList<>而不是List<>,因此
public LinkedList<NavigationPath> Childs { get; set; }
然后洗掉代碼將是
public void Remove(int id)
{
var first = Childs.First;
while (first != null)
{
var next = first.Next;
if (first.Value.Id == id)
{
first.List.Remove(first);
}
else
{
first.Value.Remove(id);
}
first = next;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/487113.html
