linq应用

1、下面的例子生成部门树

        private IEnumerable<object> GetDepartmentTreeNodes(int parentid = 0)
        {
            var nodes = DepartmentDal.Instance.GetChildren(parentid);
            var treeNodes = from n in nodes
                            orderby n.Sortnum ascending
                            select
                                new {id = n.KeyId, text = n.DepartmentName, children = GetDepartmentTreeNodes(n.KeyId)};
            return treeNodes;
        }

        public IEnumerable<Department> GetChildren(int parentid=0)
        {
            return GetAll().Where(d => d.ParentId == parentid);
        }


2、获得所有操作按钮

        /// <summary>
        /// 获取所有操作按钮
        /// </summary>
        /// <returns></returns>
        public string GetAllButtons()
        {
            var btns = from n in ButtonDal.Instance.GetAll()
                       orderby n.Sortnum
                       select n;
            return JSONhelper.ToJson(btns.ToList());
        }

3、创建treegrid的所有按钮列

        /// <summary>
        /// 创建treegrid的所有按钮列
        /// </summary>
        /// <returns></returns>
        public string BuildNavBtnsColumns()
        {
            var list = ButtonDal.Instance.GetAll();
            var json = from n in list
                       orderby n.Sortnum ascending
                       select new {title = n.ButtonText, field = n.ButtonTag, width = 60,align="center",
                                   editor = new { type = "checkbox", options = new { @on = "√", off = "x" } }
                       };
            return JSONhelper.ToJson(json);
        }

4、与JObject、JArray配合使用

        public JArray GetRoleNavBtns(IEnumerable<DataRow> btns, int parentId)
        {
            var navList = NavigationDal.Instance.GetList(parentId);

            var dataRows = btns as DataRow[] ?? btns.ToArray();
            var navigations = navList as Navigation[] ?? navList.ToArray();
            
            JArray jArr = new JArray();
            foreach (var n in navigations)
            {
                var jobj = new JObject(new JProperty("KeyId", n.KeyId),
                                       new JProperty("NavTitle", n.NavTitle),
                                       new JProperty("iconCls", n.iconCls),
                                       new JProperty("Buttons", new JArray(from b in n.Buttons
                                                                           select new JValue(b.ButtonTag))),
                                       new JProperty("children", GetRoleNavBtns(dataRows, n.KeyId)));

                var n1 = n;

                var navbtns = dataRows.Where(b => (int) b["navid"] == n1.KeyId).Select(c=>c["ButtonTag"]).ToArray();

                foreach (var button in ButtonDal.Instance.GetAll())
                    jobj.Add(new JProperty(button.ButtonTag, navbtns.Contains(button.ButtonTag) ? "√" : "x"));

                jArr.Add(jobj);
            }
            return jArr;
        }




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值