美文网首页
C#:树型数组,分级模糊查询

C#:树型数组,分级模糊查询

作者: 秋叶丶怜惜 | 来源:发表于2021-01-20 16:35 被阅读0次

C#:树型数组,分级模糊查询

public class Data
        {
            public int id { get; set; }
            public int pid { get; set; }
            public string name { get; set; }
            public List<Data> children { get; set; }
        }
        static void Main(string[] args)
        {
            List<Data> obj = new List<Data>();
            obj.Add(new Data { id = 1, pid = 0, name = "a" });
            obj.Add(new Data { id = 2, pid = 1, name = "ab" });
            obj.Add(new Data { id = 3, pid = 1, name = "wa" });
            obj.Add(new Data { id = 4, pid = 2, name = "abc" });
            obj.Add(new Data { id = 5, pid = 3, name = "aw" });
            obj.Add(new Data { id = 6, pid = 1, name = "zz" });
            obj.Add(new Data { id = 7, pid = 2, name = "aa" });
            obj.Add(new Data { id = 8, pid = 3, name = "pw" });
            obj.Add(new Data { id = 9, pid = 3, name = "ap" });
            obj.Add(new Data { id = 10, pid = 1, name = "am" });
            obj.Add(new Data { id = 11, pid = 2, name = "sw" });
            obj.Insert(1, new Data { id = 8888, });
            Data li = new Data();
            li.id = 0;
            li.pid = 0;
            tolist(obj, li);
            var m = fun("b", li.children);
            Console.ReadLine();
        }
        /// <summary>
        /// 树型数据模糊搜索
        /// </summary>
        /// <param name="str"></param>
        /// <param name="list"></param>
        /// <returns></returns>
        public static List<Data> fun(string str, List<Data> list)
        {
            List<Data> ps = new List<Data>();
            foreach (var item in list)
            {
                if (item.name.Contains(str))
                {
                    item.children = item.children.Where(x => x.name.Contains(str)).ToList();
                    ps.Add(item);
                }
                else
                {
                    if (item.children.Count > 0 )
                    {
                        var li = fun(str, item.children);
                        Data obj = new Data
                        {
                            id = item.id,
                            name = item.name,
                            children = li,
                            pid = item.pid
                        };
                        if (li.Count() > 0 )
                        {
                            ps.Add(obj);
                        }
                    }
                }
            }
            return ps;
        }
        /// <summary>
        /// 转树型
        /// </summary>
        /// <param name="lists"></param>
        /// <param name="p"></param>
        public static void tolist(List<Data> lists, Data p)
        {
            var list = lists.Where(ee => ee.pid == p.id).ToList();
            p.children = new List<Data>();
            p.children.AddRange(list);
            foreach (var item in list)
            {
                tolist(lists, item);
            }
        }

相关文章

网友评论

      本文标题:C#:树型数组,分级模糊查询

      本文链接:https://www.haomeiwen.com/subject/nwbkzktx.html