一个简单树 | 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) |
| { |
| |
| Console.WriteLine("OK"); |
| } |
| |
| Loop2(item.Items, key); |
| } |
| } |
以上的内容都很简单,现在我们来思考一下,假如我们需要返回一个值? 例如是否存在指定 Name 节点的布尔值。
暂时只想到这样的办法,肯定有更好的方案。
| bool res = false; |
| LoopAct(aa, (x) => { if (x.Name == "e1") res = true; }); |
| |
| Console.WriteLine(res); |