コード例 #1
0
        public static IEnumerable <TreeSetNode> BuildTreeSetList <T>(this IEnumerable <T> items, Func <T, string> name, Func <T, int> treeSetNodeId, Func <T, bool> check = null, string icon = null) where T : NestedTree
        {
            IList <TreeSetNode> list = new List <TreeSetNode>();

            items = EnSureList(items);
            IList <T> list2 = (items as IList <T>) ?? items.ToList();

            using (IEnumerator <T> enumerator = list2.GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    T item = enumerator.Current;
                    T t    = list2.FirstOrDefault(delegate(T m)
                    {
                        int arg_23_0 = m.Depth;
                        T item2      = item;
                        int arg_6F_0;
                        if (arg_23_0 == item2.Depth - 1)
                        {
                            int arg_46_0 = m.Left;
                            item2        = item;
                            if (arg_46_0 < item2.Left)
                            {
                                int arg_69_0 = m.Right;
                                item2        = item;
                                arg_6F_0     = ((arg_69_0 > item2.Right) ? 1 : 0);
                                return(arg_6F_0 != 0);
                            }
                        }
                        arg_6F_0 = 0;
                        return(arg_6F_0 != 0);
                    }
                                                  );
                    if (t == null)
                    {
                        T node = item;
                        List <TreeSetNode> children = (
                            from m in list2
                            where m.Left > node.Left && m.Right < node.Right
                            select m).BuildTreeSetList(name, treeSetNodeId, check, null).ToList();
                        TreeSetNode item3 = new TreeSetNode
                        {
                            TreeSetNodeId = treeSetNodeId(item),
                            Name          = name(item),
                            Checked       = check != null && check(item),
                            Children      = children,
                            IconSkin      = icon
                        };
                        list.Add(item3);
                    }
                }
            }
            return(list);
        }
コード例 #2
0
 public virtual T Visit(TreeSetNode node, T state)
 {
     return(DefaultVisit(node, state));
 }