一个简单树
class Item
{
    public string Name { get; set; }
    public List<Item> Items { get; set; } = new List<Item>();
}
基础数据
var aa = new List<Item>();
var a = new Item() { Name = "A" };
var b = new Item() { Name = "B" };
var c = new Item() { Name = "C" };
var d = new Item() { Name = "D" };
var e = new Item() { Name = "E" };
a.Items.Add(new Item { Name = "a1" });
a.Items.Add(new Item { Name = "a2" });
e.Items.Add(new Item { Name = "e1" });
e.Items.Add(new Item() { Name = "e2" });
简单遍历
static void Loop2(List<Item> aa, string key)
{
    // 根
    foreach (var item in aa)
    {
        if (item.Name==key)
        {
            //Dosomething
            Console.WriteLine("OK");
        }
        Loop2(item.Items, key);
    }
}

以上的内容都很简单,现在我们来思考一下,假如我们需要返回一个值? 例如是否存在指定 Name 节点的布尔值。

暂时只想到这样的办法,肯定有更好的方案。

bool res = false;
LoopAct(aa, (x) => { if (x.Name == "e1") res = true; });
Console.WriteLine(res);
更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Fasty 微信支付

微信支付

Fasty 支付宝

支付宝

Fasty 贝宝

贝宝