public async Task <List <Base_Action> > GetDataListAsync(Base_ActionsInputDTO input) { var q = GetIQueryable(); q = q .WhereIf(!input.parentId.IsNullOrEmpty(), x => x.ParentId == input.parentId) .WhereIf(input.types?.Length > 0, x => input.types.Contains(x.Type)) .WhereIf(input.ActionIds?.Length > 0, x => input.ActionIds.Contains(x.Id)) ; return(await q.OrderBy(x => x.Sort).ToListAsync()); }
public async Task <List <Base_ActionDTO> > GetTreeDataListAsync(Base_ActionsInputDTO input) { var qList = await GetDataListAsync(input); var treeList = qList.Select(x => new Base_ActionDTO { Id = x.Id, NeedAction = x.NeedAction, Text = x.Name, ParentId = x.ParentId, Type = x.Type, Url = x.Url, Value = x.Id, Icon = x.Icon, Sort = x.Sort, selectable = input.selectable }).ToList(); //菜单节点中,若子节点为空则移除父节点 if (input.checkEmptyChildren) { treeList = treeList.Where(x => x.Type != 0 || TreeHelper.GetChildren(treeList, x, false).Count > 0).ToList(); } await SetProperty(treeList); return(TreeHelper.BuildTree(treeList)); async Task SetProperty(List <Base_ActionDTO> _list) { var ids = _list.Select(x => x.Id).ToList(); var allPermissions = await GetIQueryable() .Where(x => ids.Contains(x.ParentId) && (int)x.Type == 2) .ToListAsync(); _list.ForEach(aData => { var permissionValues = allPermissions .Where(x => x.ParentId == aData.Id) .Select(x => $"{x.Name}({x.Value})") .ToList(); aData.PermissionValues = permissionValues; }); } }