void SetChilds(Models.DictionaryModel menu, List <Models.DictionaryModel> alls) { menu.Childrens = alls.Where(o => o.DicPSN == menu.DicSN).ToList(); int i = 0; foreach (var child in menu.Childrens) { child.Index = i++; child.ParentId = menu.Id; SetChilds(child, alls); } }
public List <Models.DictionaryModel> DataList(string verId, int?psn) { var queryMenu = ProductDictionaryDataRepository.GetQuery(o => o.DictId == verId); var q = from x in queryMenu //where x.HasChild || x.DicPSN<=0 //orderby x.SortOrder select x; var childs = new List <Entity.ProductDictionaryData>(); if (psn.HasValue) { q = q.Where(o => o.DicPSN == psn.Value); } else { q = q.Where(o => o.HasChild || o.DicPSN <= 0); childs = queryMenu.Where(o => !(o.HasChild || o.DicPSN <= 0)).ToList(); } var ms = q.OrderBy(o => o.SortOrder).ToList(); var menus = new List <Models.DictionaryModel>(); int i = 0; foreach (var m in ms) { var pm = new Models.DictionaryModel(); m.ToCopyProperty(pm); pm.ChildTitle = string.Join("、", childs.Where(o => o.DicPSN == m.DicSN).OrderBy(o => o.SortOrder).Select(o => o.Title)); pm.Index = i; i++; pm.Count = ms.Count; menus.Add(pm); } if (psn.HasValue) { return(menus); } var list = new List <Models.DictionaryModel>(); foreach (var menu in menus.Where(o => o.DicPSN <= 0)) { SetChilds(menu, menus); menu.Index = list.Count; list.Add(menu); } return(list); }
public List <Models.DictionaryModel> GetDataList(int?psn) { var queryMenu = DictRepository.GetQuery(); var q = from x in queryMenu select x; var childs = new List <Entity.SysDataDictionary>(); if (psn.HasValue) { q = q.Where(o => o.DicPSN == psn.Value); } else { q = q.Where(o => o.HasChild || o.DicPSN <= 0); childs = queryMenu.Where(o => !(o.HasChild || o.DicPSN <= 0)).ToList(); } var ms = q.OrderBy(o => o.SortOrder).ToList(); var menus = new List <Models.DictionaryModel>(); int i = 0; foreach (var m in ms) { var pm = new Models.DictionaryModel(); m.ToCopyProperty(pm); pm.Status = Convert.ToInt16(m.Status); pm.ChildTitle = string.Join("、", childs.Where(o => o.DicPSN == m.DicSN).OrderBy(o => o.SortOrder).Select(o => o.Title)); pm.Index = i; i++; pm.Count = ms.Count; menus.Add(pm); } if (psn.HasValue) { return(menus); } var list = new List <Models.DictionaryModel>(); foreach (var menu in menus.Where(o => o.DicPSN <= 0)) { SetChilds(menu, menus); menu.Index = list.Count; list.Add(menu); } return(list); }