C# 字典转换成list 排序后 修改其数据 效率对比
字典转换成list 排序后 修改其数据 效率对比
代码:
public List<TreeNode> CreateTree(Dictionary<int, TreeNode> dic) { var list = new List<TreeNode>(); foreach (var pair in dic) { var pid = pair.Value.ParentId; if (pid == 0) { list.Add(pair.Value); continue; } if (dic.ContainsKey(pid)) { var children = (List<TreeNode>)dic[pid].children; children.Add(pair.Value); } } Stopwatch sw = new Stopwatch(); //虽然效率最高 但是未改到本身的数据 sw.Start(); var list2 = dic.Select(c => c.Value).OrderByDescending(c => c.Level).Select(c => { SetType(c); return 1; }); sw.Stop(); Console.WriteLine("Select:" + sw.ElapsedMilliseconds); sw.Restart(); var list3 = dic.Select(c => c.Value).OrderByDescending(c => c.Level).ToList(); list3.ForEach(c => { SetType(c); }); sw.Stop(); Console.WriteLine("ToList Behand ForEach:" + sw.ElapsedMilliseconds); sw.Restart(); var list4 = dic.Select(c => c.Value).OrderByDescending(c => c.Level); foreach (var c in list4) { SetType(c); } sw.Stop(); Console.WriteLine("foreach:" + sw.ElapsedMilliseconds); return list; }
耗时: