Пример #1
0
        public async Task <PagedModel <DictDto> > GetPagedList(DictSearchDto criteria)
        {
            // 列表只显示id为0的dict,其他的是以"子节点"来显示的
            Expression <Func <SysDict, bool> > condition = it => it.Pid == 0;

            if (!string.IsNullOrWhiteSpace(criteria.Name))
            {
                condition = condition.And(it => it.Name.Contains(criteria.Name));
            }

            var all = await GetAll();

            var topDict = all
                          .Where(condition.Compile())
                          .Skip((criteria.Page - 1) * criteria.Limit)
                          .Take(criteria.Limit)
                          .ToList();

            var dto = DictMapper.ToDictProfileDto(all, topDict, criteria);

            if (dto.Count <= 0)
            {
                return(dto);
            }

            foreach (var item in dto.Data)
            {
                var sub = all.Where(it => it.Pid == item.Id).OrderBy(it => it.Num).ToList();

                if (sub.Count <= 0)
                {
                    continue;
                }

                item.Detail = string.Join(',', sub.Select(it => string.Join(':', it.Num, it.Name)).ToList());
            }

            return(dto);
        }