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); } }
public ActionResult GetBuildingList(WJ_BuildingFilter filter) { var data = service.GetBuildingList(filter, out int total); return(Json(new TableDataModel(total, data))); }