public List <WJ_BuildingModel> GetBuildingList(WJ_BuildingFilter filter, out int total)
 {
     using (DataProvider dp = new DataProvider())
     {
         var list = dp.WJ_Building.Where(m => !m.IsDel);
         if (filter.BuildingName.IsNotNullOrWhiteSpace())
         {
             list = list.Where(m => m.BuildName.Contains(filter.BuildingName));
         }
         if (filter.BuildingTag.IsNotNullAndCountGtZero())
         {
             list = list.Where(m => dp.WJ_BuildingAttr.Where(x => x.BuildingId == m.Id).Any(x => filter.BuildingTag.Contains(x.DicId)));
         }
         if (filter.BuildingType.IsNotNullAndCountGtZero())
         {
             list = list.Where(m => dp.WJ_BuildingAttr.Where(x => x.BuildingId == m.Id).Any(x => filter.BuildingType.Contains(x.DicId)));
         }
         total = list.Count();
         var modelList   = Mapper.Map <List <WJ_BuildingModel> >(list.OrderBy(m => m.Sort).ThenByDescending(m => m.CreateTime).Skip(filter.Skip).Take(filter.PageSize).ToList());
         var modelListId = modelList.Select(m => m.Id);
         var dicList     = (from a in dp.WJ_BuildingAttr.Where(m => modelListId.Contains(m.BuildingId))
                            join b in dp.System_DicItem on a.DicId equals b.Id
                            select new
         {
             a.BuildingId,
             a.AttrType,
             b.ItemDesc
         }).ToList();
         modelList.ForEach(m =>
         {
             m.BuildTypeListText         = dicList.Where(x => x.AttrType == "BuildingType" && x.BuildingId == m.Id).Select(x => x.ItemDesc).ToList();
             m.BuildTagListText          = dicList.Where(x => x.AttrType == "BuildingTag" && x.BuildingId == m.Id).Select(x => x.ItemDesc).ToList();
             m.BuildPropertyTypeLsitText = dicList.Where(x => x.AttrType == "BuildPropertyType" && x.BuildingId == m.Id).Select(x => x.ItemDesc).ToList();
         });
         return(modelList);
     }
 }
Esempio n. 2
0
        public ActionResult GetBuildingList(WJ_BuildingFilter filter)
        {
            var data = service.GetBuildingList(filter, out int total);

            return(Json(new TableDataModel(total, data)));
        }