Exemplo n.º 1
0
        public ActionResult Search(long typeId, string keyWords, string monthRent,
                                   string orderByType, long?regionId)
        {
            //获得当前用户城市Id
            long cityId = FrontUtils.GetCityId(HttpContext);

            //获取城市下所有区域
            var regions = regionService.GetAll(cityId);
            HouseSearchViewModel model = new HouseSearchViewModel();

            model.regions = regions;

            HouseSearchOptions searchOpt = new HouseSearchOptions();

            searchOpt.CityId       = cityId;
            searchOpt.CurrentIndex = 1;

            //解析月租部分
            int?startMonthRent;
            int?endMonthRent;

            //ref/out
            ParseMonthRent(monthRent, out startMonthRent, out endMonthRent);
            searchOpt.EndMonthRent   = endMonthRent;
            searchOpt.StartMonthRent = startMonthRent;



            searchOpt.Keywords = keyWords;
            switch (orderByType)
            {
            case "MonthRentAsc":
                searchOpt.OrderByType = HouseSearchOrderByType.MonthRentAsc;
                break;

            case "MonthRentDesc":
                searchOpt.OrderByType = HouseSearchOrderByType.MonthRentDesc;
                break;

            case "AreaAsc":
                searchOpt.OrderByType = HouseSearchOrderByType.AreaAsc;
                break;

            case "AreaDesc":
                searchOpt.OrderByType = HouseSearchOrderByType.AreaDesc;
                break;
            }
            searchOpt.PageSize = 10;
            searchOpt.RegionId = regionId;
            searchOpt.TypeId   = typeId;

            //开始搜索
            var searchResult = houseService.Search(searchOpt);

            model.houses = searchResult.result;
            //当前用户城市Id

            return(View(model));
        }
Exemplo n.º 2
0
        /// <summary>
        /// 加载更多的数据配合search2实现下拉加载
        /// </summary>
        /// <param name="typeId"></param>
        /// <param name="keyWords">关键字</param>
        /// <param name="monthRent">价格区间</param>
        /// <param name="orderByType">排序规则</param>
        /// <param name="regionId">区域id</param>
        /// <param name="pageIndex">加载第几页的数据</param>
        /// <returns></returns>
        public ActionResult LoadMore(long typeId, string keyWords, string monthRent,
                                     string orderByType, long?regionId, int pageIndex)
        {
            //获得当前用户城市Id
            long cityId = FrontUtils.GetCityId(HttpContext);
            //创建搜索条件的类
            HouseSearchOptions searchOpt = new HouseSearchOptions();

            searchOpt.CityId = cityId;
            //加载第几页的数据
            searchOpt.CurrentIndex = pageIndex;

            //解析月租部分
            int?startMonthRent;
            int?endMonthRent;

            //ref/out
            ParseMonthRent(monthRent, out startMonthRent, out endMonthRent);
            searchOpt.EndMonthRent   = endMonthRent;
            searchOpt.StartMonthRent = startMonthRent;

            searchOpt.Keywords = keyWords;
            //排序规则
            switch (orderByType)
            {
            case "MonthRentAsc":
                searchOpt.OrderByType = HouseSearchOrderByType.MonthRentAsc;
                break;

            case "MonthRentDesc":
                searchOpt.OrderByType = HouseSearchOrderByType.MonthRentDesc;
                break;

            case "AreaAsc":
                searchOpt.OrderByType = HouseSearchOrderByType.AreaAsc;
                break;

            case "AreaDesc":
                searchOpt.OrderByType = HouseSearchOrderByType.AreaDesc;
                break;
            }
            //每页的条数
            searchOpt.PageSize = 10;
            //区域的id
            searchOpt.RegionId = regionId;
            //房屋的类型(合租,整租)
            searchOpt.TypeId = typeId;

            //开始搜索
            var searchResult = houseService.Search(searchOpt);
            var houses       = searchResult.result;

            return(Json(new AjaxResult {
                Status = "ok", Data = houses
            }));
        }
Exemplo n.º 3
0
        public ActionResult Search(string keyWord, string monthRent, string orderByType, long?regionId, long typeId)
        {
            //获得当前用户城市ID
            long cityId = FrontUtils.GetCityId(HttpContext);

            //获得城市区域
            var regions = regionService.GetAll(cityId);
            HouseSearchViewModel model = new HouseSearchViewModel
            {
                Regions = regions,
            };


            int?startMonthRent;
            int?endMonthRent;

            ParseMonthRent(monthRent, out startMonthRent, out endMonthRent);

            var orderByTypeEnum = OrderByType.CreateDateDesc;

            switch (orderByType)
            {
            case "MonthRentAsc":
                orderByTypeEnum = OrderByType.MonthRentAsc;
                break;

            case "MonthRentDesc":
                orderByTypeEnum = OrderByType.MonthRentDesc;
                break;

            case "AreaAsc":
                orderByTypeEnum = OrderByType.AreaAsc;
                break;

            case "AreaDesc":
                orderByTypeEnum = OrderByType.AreaDesc;
                break;
            }
            HouseSearchOptions searchOption = new HouseSearchOptions
            {
                CityId         = cityId,
                CurrentIndex   = 1,
                StartMonthRent = startMonthRent,
                EndMonthRent   = endMonthRent,
                Keywords       = keyWord,
                OrderByType    = orderByTypeEnum,
                PageSize       = 10,
                RegionId       = regionId,
                TypeId         = typeId,
            };
            var searchResult = houseService.Search(searchOption);

            model.Houses = searchResult.result;

            return(View(model));
        }
Exemplo n.º 4
0
        public HouseDTO[] Search(HouseSearchOptions houseSearchOptions)
        {
            using (ZSZDbContext ctx = new ZSZDbContext())
            {
                CommonService <HouseEntity> service = new CommonService <HouseEntity>(ctx);
                var houses = service.GetAll().Where(h => h.TypeId == houseSearchOptions.TypeId && h.CommunitityEntity.RegionEntity.CityId == houseSearchOptions.CityId);
                if (houseSearchOptions.RegionId != null)
                {
                    houses = houses.Where(h => h.CommunitityEntity.RegionId == houseSearchOptions.RegionId);
                }

                if (houseSearchOptions.MonthRentStart != null)
                {
                    houses = houses.Where(h => h.MonthRent >= houseSearchOptions.MonthRentStart);
                }
                if (houseSearchOptions.MonthRentEnd != null)
                {
                    houses = houses.Where(h => h.MonthRent <= houseSearchOptions.MonthRentEnd);
                }

                if (!string.IsNullOrEmpty(houseSearchOptions.KeyWords))
                {
                    houses = houses.Where(h => h.Address.Contains(houseSearchOptions.KeyWords) ||
                                          h.Description.Contains(houseSearchOptions.KeyWords) ||
                                          h.CommunitityEntity.Name.Contains(houseSearchOptions.KeyWords) ||
                                          h.CommunitityEntity.Location.Contains(houseSearchOptions.KeyWords) ||
                                          h.CommunitityEntity.Traffic.Contains(houseSearchOptions.KeyWords));
                }

                switch (houseSearchOptions.OrderByType)
                {
                case HouseSearchOrderByType.AreaAsc:
                    houses = houses.OrderBy(h => h.Area);
                    break;

                case HouseSearchOrderByType.AreaDesc:
                    houses = houses.OrderByDescending(h => h.Area);
                    break;

                case HouseSearchOrderByType.MonthRentAsc:
                    houses = houses.OrderBy(h => h.MonthRent);
                    break;

                case HouseSearchOrderByType.MonthRentDesc:
                    houses = houses.OrderByDescending(h => h.MonthRent);
                    break;
                }

                houses.Include(h => h.AttachmentEntities).Include(h => h.CommunitityEntity)
                .Include("CommunitityEntity.RegionEntity").Include("CommunitityEntity.RegionEntity.CityEntity")
                .Include(h => h.Status).Include(h => h.DecorateStatus).Include(h => h.RoomType).Include(h => h.Type);
                return(houses.ToList().Select(h => ToDTO(h)).ToArray());
            }
        }
Exemplo n.º 5
0
        public ActionResult Search(long typeId, string keyWords, string monthRent, string oderByType, long?regionId)
        {
            //获取当前用户城市ID
            var cityId = FrontHelper.GetCityId(HttpContext);
            //获取城市下所有区域
            var regions = RegionService.GetAll(cityId);
            HouseSearchViewModel viewModel = new HouseSearchViewModel();

            viewModel.Regions = regions;
            HouseSearchOptions searchOptions = new HouseSearchOptions();

            searchOptions.TypeId       = typeId;
            searchOptions.Keywords     = keyWords;
            searchOptions.PageSize     = 10;
            searchOptions.RegionId     = regionId;
            searchOptions.CityId       = cityId;
            searchOptions.CurrentIndex = 1;

            switch (oderByType)
            {
            case "MonthRentDesc":
                searchOptions.OrderByType = HouseSearchOrderByType.MonthRentDesc;
                break;

            case "MonthRentAsc":
                searchOptions.OrderByType = HouseSearchOrderByType.MonthRentAsc;
                break;

            case "AreaAsc":
                searchOptions.OrderByType = HouseSearchOrderByType.AreaAsc;
                break;

            case "AreaDesc":
                searchOptions.OrderByType = HouseSearchOrderByType.AreaDesc;
                break;
            }
            //解析月租部分
            int?startMonthRent;
            int?endMonthRent;

            ParseMonthRent(monthRent, out startMonthRent, out endMonthRent);

            searchOptions.StartMonthRent = startMonthRent;
            searchOptions.EndMonthRent   = endMonthRent;

            var houseSearchResult = HouseService.Search(searchOptions);

            viewModel.Houses = houseSearchResult.result;
            return(View(viewModel));
        }
Exemplo n.º 6
0
        /// <summary>
        /// 加载数据
        /// </summary>
        /// <param name="typeId"></param>
        /// <param name="keyWords"></param>
        /// <param name="monthRent"></param>
        /// <param name="orderByType"></param>
        /// <param name="regionId"></param>
        /// <param name="pageIndex"></param>
        /// <returns></returns>
        public ActionResult LoadMore(long typeId, string keyWords, string monthRent, string orderByType, long?regionId, int pageIndex)
        {
            //获取城市Id
            long cityId = FrontUtils.GetCityId(HttpContext);

            HouseSearchOptions searchOpt = new HouseSearchOptions();

            searchOpt.CityId       = cityId;
            searchOpt.CurrentIndex = pageIndex;

            //根据月租金
            int?startMonthRent;
            int?endMonthRent;

            ParseMonthRent(monthRent, out startMonthRent, out endMonthRent);
            searchOpt.EndMonthRent   = endMonthRent;
            searchOpt.StartMonthRent = startMonthRent;
            //搜索
            searchOpt.Keywords = keyWords;
            //根据orderByType排序规则搜索
            switch (orderByType)
            {
            case "MonthRentAsc":
                searchOpt.OrderByType = HouseSearchOrderByType.MonthRentAsc;
                break;

            case "MonthRentDesc":
                searchOpt.OrderByType = HouseSearchOrderByType.MonthRentDesc;
                break;

            case "AreaAsc":
                searchOpt.OrderByType = HouseSearchOrderByType.AreaAsc;
                break;

            default:
                searchOpt.OrderByType = HouseSearchOrderByType.AreaDesc;
                break;
            }
            searchOpt.PageSize = 10;
            searchOpt.RegionId = regionId;
            searchOpt.TypeId   = typeId;
            //开始搜索
            var searchResult = houseService.Search(searchOpt);//搜索结果
            var houses       = searchResult.result;

            return(Json(new AjaxResult()
            {
                Status = "ok", Data = houses
            }));
        }
Exemplo n.º 7
0
        public ActionResult Search(long typeId, string keyWords, string monthRent, string orderByType, long?regionId)
        {  //获得当前城市的Id
            long cityId = FrontUtils.GetCityId(HttpContext);
            HouseSearchViewModel model = new Modals.HouseSearchViewModel();

            //获取这个cityId城市下所有的区域
            model.regions = regionService.GetAll(cityId);
            HouseSearchOptions searchOpt = new HouseSearchOptions();

            searchOpt.CityId       = cityId;
            searchOpt.CurrentIndex = 1;

            //根据月租金
            int?startMonthRent;
            int?endMonthRent;

            ParseMonthRent(monthRent, out startMonthRent, out endMonthRent);
            searchOpt.EndMonthRent   = endMonthRent;
            searchOpt.StartMonthRent = startMonthRent;
            //搜索
            searchOpt.Keywords = keyWords;
            //根据orderByType排序规则搜索
            switch (orderByType)
            {
            case "MonthRentAsc":
                searchOpt.OrderByType = HouseSearchOrderByType.MonthRentAsc;
                break;

            case "MonthRentDesc":
                searchOpt.OrderByType = HouseSearchOrderByType.MonthRentDesc;
                break;

            case "AreaAsc":
                searchOpt.OrderByType = HouseSearchOrderByType.AreaAsc;
                break;

            default:
                searchOpt.OrderByType = HouseSearchOrderByType.AreaDesc;
                break;
            }
            searchOpt.PageSize = 10;
            searchOpt.RegionId = regionId;
            searchOpt.TypeId   = typeId;
            //开始搜索
            var searchResult = houseService.Search(searchOpt);//搜索结果

            model.Houses = searchResult.result;
            return(View(model));
        }
Exemplo n.º 8
0
        public ActionResult LoadMore(long typeId, string keyWords, string monthRent, string oderByType, int currentIndex, long?regionId)
        {
            //获取当前用户城市ID
            var cityId = FrontHelper.GetCityId(HttpContext);

            HouseSearchOptions searchOptions = new HouseSearchOptions();

            searchOptions.TypeId       = typeId;
            searchOptions.Keywords     = keyWords;
            searchOptions.PageSize     = 10;
            searchOptions.RegionId     = regionId;
            searchOptions.CityId       = cityId;
            searchOptions.CurrentIndex = currentIndex;

            switch (oderByType)
            {
            case "MonthRentDesc":
                searchOptions.OrderByType = HouseSearchOrderByType.MonthRentDesc;
                break;

            case "MonthRentAsc":
                searchOptions.OrderByType = HouseSearchOrderByType.MonthRentAsc;
                break;

            case "AreaAsc":
                searchOptions.OrderByType = HouseSearchOrderByType.AreaAsc;
                break;

            case "AreaDesc":
                searchOptions.OrderByType = HouseSearchOrderByType.AreaDesc;
                break;
            }
            //解析月租部分
            int?startMonthRent;
            int?endMonthRent;

            ParseMonthRent(monthRent, out startMonthRent, out endMonthRent);

            searchOptions.StartMonthRent = startMonthRent;
            searchOptions.EndMonthRent   = endMonthRent;

            var houseSearchResult = HouseService.Search(searchOptions);
            var houses            = houseSearchResult.result;

            return(Json(new AjaxResult {
                Status = "ok", Data = houses
            }));
        }
Exemplo n.º 9
0
        public ActionResult LoadMore(long typeId, long?regionId, string monthRent, string orderByType, int currentIndex)
        {
            HouseSearchResult  result  = new HouseSearchResult();
            HouseSearchOptions options = new HouseSearchOptions();

            options.CityId       = 4;
            options.TypeId       = typeId;
            options.RegionId     = regionId;
            options.CurrentIndex = currentIndex;
            options.PageSize     = 10;
            int?startMonthRent;
            int?endMonthRent;

            GetMonthRent(monthRent, out startMonthRent, out endMonthRent);
            options.StartMonthRent = startMonthRent;
            options.EndMonthRent   = endMonthRent;
            switch (orderByType)
            {
            case "AscMonthRent":
                options.OrderByType = OrderByType.MonRentAsc;
                break;

            case "DescMonthRent":
                options.OrderByType = OrderByType.MonthRentDesc;
                break;

            case "AscArea":
                options.OrderByType = OrderByType.AreaAsc;
                break;

            case "DescArea":
                options.OrderByType = OrderByType.AreaDesc;
                break;

            case "DescCreateDateTime":
                options.OrderByType = OrderByType.CreateDateDesc;
                break;
            }
            result = houseService.Search(options);
            var Houses = result.Houses;

            return(Json(new AjaxResult {
                Status = "ok", Data = Houses
            }));
        }
Exemplo n.º 10
0
        public ActionResult Search(long typeId, long?regionId, string monthRent, string orderByType)
        {
            SearchViewModel    model   = new Models.SearchViewModel();
            HouseSearchResult  result  = new HouseSearchResult();
            HouseSearchOptions options = new HouseSearchOptions();

            options.CityId       = 4;
            options.TypeId       = typeId;
            options.RegionId     = regionId;
            options.CurrentIndex = 1;
            options.PageSize     = 10;
            int?startMonthRent;
            int?endMonthRent;

            GetMonthRent(monthRent, out startMonthRent, out endMonthRent);
            options.StartMonthRent = startMonthRent;
            options.EndMonthRent   = endMonthRent;
            switch (orderByType)
            {
            case "AscMonthRent":
                options.OrderByType = OrderByType.MonRentAsc;
                break;

            case "DescMonthRent":
                options.OrderByType = OrderByType.MonthRentDesc;
                break;

            case "AscArea":
                options.OrderByType = OrderByType.AreaAsc;
                break;

            case "DescArea":
                options.OrderByType = OrderByType.AreaDesc;
                break;

            case "DescCreateDateTime":
                options.OrderByType = OrderByType.CreateDateDesc;
                break;
            }
            result        = houseService.Search(options);
            model.Regions = regionService.GetAll(4);
            model.Houses  = result.Houses;
            return(View(model));
        }
Exemplo n.º 11
0
        public ActionResult AA()
        {
            HouseSearchOptions opt = new HouseSearchOptions();

            opt.CityId         = 1;
            opt.TypeId         = 11;
            opt.StartMonthRent = 300;
            opt.OrderByType    = HouseSearchOrderByType.AreaDesc;
            opt.Keywords       = "楼";
            opt.PageSize       = 10;
            opt.CurrentIndex   = 1;
            var result = houseService.Search(opt);

            StringBuilder sb = new StringBuilder();

            sb.AppendLine("总结过条数:" + result.totalCount);
            foreach (var h in result.result)
            {
                sb.AppendLine(h.CommunityName + "," + h.Area + "," + h.MonthRent);
            }
            return(Content(sb.ToString()));
        }
Exemplo n.º 12
0
        public HouseSearchResult Search(HouseSearchOptions options)
        {
            using (MyDbContext ctx = new MyDbContext())
            {
                BaseService <HouseEntity> bs = new BaseService <HouseEntity>(ctx);
                var items = bs.GetAll().Where(e =>
                                              e.Community.Region.CityId == options.CityId && e.TypeId == options.TypeId);
                if (options.RegionId != null)
                {
                    items = items.Where(e => e.Community.RegionId == options.RegionId);
                }

                if (options.StartMonthRent != null)
                {
                    items = items.Where(e => e.MonthRent >= options.StartMonthRent);
                }

                if (options.EndMonthRent != null)
                {
                    items = items.Where(e => e.MonthRent <= options.EndMonthRent);
                }

                if (!string.IsNullOrEmpty(options.Keywords))
                {
                    items = items.Where(e => e.Address.Contains(options.Keywords) ||
                                        e.Description.Contains(options.Keywords) ||
                                        e.Community.Name.Contains(options.Keywords) ||
                                        e.Community.Name.Contains(options.Keywords) ||
                                        e.Community.Location.Contains(options.Keywords) ||
                                        e.Community.Traffic.Contains(options.Keywords)
                                        );
                }

                long totalCount = items.LongCount();
                items = items.Include(e => e.Attachments)
                        .Include(e => e.Community)
                        .Include(nameof(HouseEntity.Community) + "." + nameof(CommunityEntity.Region))
                        .Include(nameof(HouseEntity.Community) + "." + nameof(CommunityEntity.Region) + "." + nameof(RegionEntity.City))
                        .Include(e => e.DescorateStatus)
                        .Include(e => e.Status)
                        .Include(e => e.RoomType)
                        .Include(e => e.Type);
                switch (options.OrderByType)
                {
                case OrderByType.AreaAsc:
                    items = items.OrderBy(e => e.Area);
                    break;

                case OrderByType.AreaDesc:
                    items = items.OrderByDescending(e => e.Area);
                    break;

                case OrderByType.CreateDateDesc:
                    items = items.OrderByDescending(e => e.CreateDateTIme);
                    break;

                case OrderByType.MonthRentAsc:
                    items = items.OrderBy(e => e.MonthRent);
                    break;

                case OrderByType.MonthRentDesc:
                    items = items.OrderByDescending(e => e.MonthRent);
                    break;
                }

                items = items.Skip((options.CurrentIndex - 1) * options.PageSize).Take(options.PageSize);
                HouseSearchResult searchResult = new HouseSearchResult();
                searchResult.totalCount = totalCount;
                List <HouseDTO> houses = new List <HouseDTO>();
                foreach (var item in items)
                {
                    houses.Add(ToDTO(item));
                }

                searchResult.result = houses.ToArray();
                return(searchResult);
            }
            //throw new NotImplementedException();
        }
Exemplo n.º 13
0
 public HouseSearchResult Search(HouseSearchOptions options)
 {
     throw new NotImplementedException();
 }
Exemplo n.º 14
0
        public HouseSearchResult Search(HouseSearchOptions options)
        {
            /*
             * using (ZSZDbContext ctx = new ZSZDbContext())
             * {
             *  BaseService<HouseEntity> bs = new BaseService<HouseEntity>(ctx);
             *  var items = bs.GetAll().Where(h => h.Address.Contains("楼"));
             *  long c = items.LongCount();
             *  items.Take(10).ToList();
             * }*/

            using (ZSZDbContext ctx = new ZSZDbContext())
            {
                BaseService <HouseEntity> bs = new BaseService <HouseEntity>(ctx);
                var items = bs.GetAll().Where(h => h.Community.Region.CityId == options.CityId &&
                                              h.TypeId == options.TypeId);
                if (options.RegionId != null)
                {
                    items = items.Where(t => t.Community.RegionId == options.RegionId);
                }
                if (options.StartMonthRent != null)
                {
                    items = items.Where(t => t.MonthRent >= options.StartMonthRent);
                }
                if (options.EndMonthRent != null)
                {
                    items = items.Where(t => t.MonthRent <= options.EndMonthRent);
                }
                if (options.EndMonthRent != null)
                {
                    items = items.Where(t => t.MonthRent <= options.EndMonthRent);
                }
                if (!string.IsNullOrEmpty(options.Keywords))
                {
                    items = items.Where(t => t.Address.Contains(options.Keywords) ||
                                        t.Description.Contains(options.Keywords) ||
                                        t.Community.Name.Contains(options.Keywords) ||
                                        t.Community.Location.Contains(options.Keywords) ||
                                        t.Community.Traffic.Contains(options.Keywords));
                }
                long totalCount = items.LongCount();//总搜索结果条数

                items = items.Include(h => h.Attachments).Include(h => h.Community)
                        .Include(nameof(HouseEntity.Community) + "." + nameof(CommunityEntity.Region)
                                 + "." + nameof(RegionEntity.City))
                        .Include(nameof(HouseEntity.Community) + "." + nameof(CommunityEntity.Region))
                        .Include(h => h.DecorateStatus)
                        .Include(h => h.HousePics)
                        .Include(h => h.RoomType)
                        .Include(h => h.Status)
                        .Include(h => h.Type).Include(h => h.Attachments);

                switch (options.OrderByType)
                {
                case HouseSearchOrderByType.AreaAsc:
                    items = items.OrderBy(t => t.Area);
                    break;

                case HouseSearchOrderByType.AreaDesc:
                    items = items.OrderByDescending(t => t.Area);
                    break;

                case HouseSearchOrderByType.CreateDateDesc:
                    items = items.OrderByDescending(t => t.CreateDateTime);
                    break;

                case HouseSearchOrderByType.MonthRentAsc:
                    items = items.OrderBy(t => t.MonthRent);
                    break;

                case HouseSearchOrderByType.MonthRentDesc:
                    items = items.OrderByDescending(t => t.MonthRent);
                    break;
                }
                //一定不要items.Where
                //而要items=items.Where();
                //OrderBy要在Skip和Take之前
                //给用户看的页码从1开始,程序中是从0开始
                items = items.Skip((options.CurrentIndex - 1) * options.PageSize)
                        .Take(options.PageSize);
                HouseSearchResult searchResult = new HouseSearchResult();
                searchResult.totalCount = totalCount;
                List <HouseDTO> houses = new List <HouseDTO>();
                foreach (var item in items)
                {
                    houses.Add(ToDTO(item));
                }
                searchResult.result = houses.ToArray();
                return(searchResult);
            }
        }
Exemplo n.º 15
0
        public HouseSearchResult Search(HouseSearchOptions options)
        {
            using (RhDbContext ctx = new RhDbContext())
            {
                CommonService <HouseEntity> cs = new CommonService <HouseEntity>(ctx);
                //判断所有的searchoptions
                var items = cs.GetAll().Where(t => t.Community.Region.CityId == options.CityId);

                items = items.Where(t => t.TypeId == options.TypeId);


                if (options.RegionId != null)
                {
                    items = items.Where(t => t.Community.RegionId == options.RegionId);
                }

                if (options.StartMonthRent != null)
                {
                    items = items.Where(t => t.MonthRent >= options.StartMonthRent);
                }

                if (options.EndMonthRent != null)
                {
                    items = items.Where(t => t.MonthRent <= options.EndMonthRent);
                }

                if (!string.IsNullOrEmpty(options.Keywords))
                {
                    items = items.Where(t => t.Address.Contains(options.Keywords) ||
                                        t.Description.Contains(options.Keywords) ||
                                        t.Community.Name.Contains(options.Keywords) ||
                                        t.Community.Location.Contains(options.Keywords) ||
                                        t.Community.Traffic.Contains(options.Keywords));
                }
                //使用include连接查询,是立即把外键表都查询出来,正常是用到外键表才去查的,但是这里已知肯定要用到外键表,所以用include,避免延迟加载,不然查询的时候一直去查外键表肯定不好
                items = items.Include(h => h.Attachments).Include(h => h.Community)
                        .Include(h => h.Community.Region).Include(h => h.Community.Region.City).Include(h => h.Type);
                //搜索结果总条数
                long totalCount = items.LongCount();
                switch (options.OrderByType)
                {
                case HouseSearchOrderByType.AreaAsc:
                    items = items.OrderBy(t => t.Area);
                    break;

                case HouseSearchOrderByType.AreaDesc:
                    items = items.OrderByDescending(t => t.Area);
                    break;

                case HouseSearchOrderByType.MonthRentAsc:
                    items = items.OrderBy(t => t.MonthRent);
                    break;

                case HouseSearchOrderByType.MonthRentDesc:
                    items = items.OrderByDescending(t => t.MonthRent);
                    break;

                case HouseSearchOrderByType.CreateDateDesc:
                    items = items.OrderBy(t => t.CreateDateTime);
                    break;
                }
                //一定不要items.Where
                //而要items=items.Where();
                //OrderBy要在Skip和Take之前
                //给用户看的页码从1开始,程序中是从0开始
                items = items.Skip((options.CurrentIndex - 1) * options.PageSize).Take(options.PageSize);
                HouseSearchResult searchResult = new HouseSearchResult();
                searchResult.totalCount = totalCount;
                HouseEntity[]   lastItems = items.ToArray();
                List <HouseDTO> houses    = new List <HouseDTO>();
                foreach (var houseEntity in lastItems)
                {
                    houses.Add(Entity2DTO(houseEntity));
                }

                searchResult.result = houses.ToArray();
                return(searchResult);
            }
        }
Exemplo n.º 16
0
        /// <summary>
        /// 搜索,返回值包含:总条数和HouseDTO[](房子的数据)两个属性
        /// </summary>
        /// <param name="options">搜索条件</param>
        /// <returns></returns>
        public HouseSearchResult Search(HouseSearchOptions options)
        {
            /*
             * using (ZSZDbContext ctx = new ZSZDbContext())
             * {
             * BaseService<HouseEntity> bs = new BaseService<HouseEntity>(ctx);
             * var items = bs.GetAll().Where(h => h.Address.Contains("楼"));
             * long c = items.LongCount();
             * items.Take(10).ToList();
             * }*/

            using (ZSZDbContext ctx = new ZSZDbContext())
            {
                BaseService <HouseEntity> bs = new BaseService <HouseEntity>(ctx);
                //先获得所有的房子信息然后通过城市的id和房屋的类型过滤(因为城市id和房屋类型不会为空)
                var items = bs.GetAll().Where(h => h.Community.Region.CityId == options.CityId &&
                                              h.TypeId == options.TypeId);

                if (options.RegionId != null)//区域是否为空
                {
                    items = items.Where(t => t.Community.RegionId == options.RegionId);
                }
                if (options.StartMonthRent != null)//房租起始月租是否为空
                {
                    items = items.Where(t => t.MonthRent >= options.StartMonthRent);
                }
                if (options.EndMonthRent != null)//房租结束月租是否为空
                {
                    items = items.Where(t => t.MonthRent <= options.EndMonthRent);
                }

                if (!string.IsNullOrEmpty(options.Keywords))//搜索关键词是否为空
                {
                    //contains被EF翻译为like操作
                    items = items.Where(t => t.Address.Contains(options.Keywords) ||
                                        t.Description.Contains(options.Keywords) ||
                                        t.Community.Name.Contains(options.Keywords) ||
                                        t.Community.Location.Contains(options.Keywords) ||
                                        t.Community.Traffic.Contains(options.Keywords));
                }

                long totalCount = items.LongCount();//总搜索结果条数

                items = items.Include(h => h.Attachments).Include(h => h.Community)
                        .Include(nameof(HouseEntity.Community) + "." + nameof(CommunityEntity.Region)
                                 + "." + nameof(RegionEntity.City))
                        .Include(nameof(HouseEntity.Community) + "." + nameof(CommunityEntity.Region))
                        .Include(h => h.DecorateStatus)
                        .Include(h => h.HousePics)
                        .Include(h => h.RoomType)
                        .Include(h => h.Status)
                        .Include(h => h.Type).Include(h => h.Attachments);

                //排序
                switch (options.OrderByType)
                {
                case HouseSearchOrderByType.AreaAsc:    //房屋面积升序
                    items = items.OrderBy(t => t.Area);
                    break;

                case HouseSearchOrderByType.AreaDesc:    //房屋面积降序
                    items = items.OrderByDescending(t => t.Area);
                    break;

                case HouseSearchOrderByType.CreateDateDesc:
                    items = items.OrderByDescending(t => t.CreateDateTime);
                    break;

                case HouseSearchOrderByType.MonthRentAsc:    //月租金额升序
                    items = items.OrderBy(t => t.MonthRent);
                    break;

                case HouseSearchOrderByType.MonthRentDesc:    //月租金额降序
                    items = items.OrderByDescending(t => t.MonthRent);
                    break;
                }
                //一定不要items.Where
                //而要items=items.Where();
                //OrderBy要在Skip和Take之前
                //给用户看的页码从1开始,程序中是从0开始,跳过(当前页码-1)*每页多少条,取options.PageSize条数据
                items = items.Skip((options.CurrentIndex - 1) * options.PageSize)
                        .Take(options.PageSize);
                HouseSearchResult searchResult = new HouseSearchResult();
                searchResult.totalCount = totalCount;//总条数
                List <HouseDTO> houses = new List <HouseDTO>();
                //遍历取出来的房屋数据
                foreach (var item in items)
                {
                    //把房屋数据转换为dto
                    houses.Add(ToDTO(item));
                }
                searchResult.result = houses.ToArray();
                return(searchResult);
            }
        }
Exemplo n.º 17
0
        public HouseSearchResult Search(HouseSearchOptions options)
        {
            using (ZSZDbContext ctx = new ZSZDbContext())
            {
                BaseService <HouseEntity> bs = new BaseService <Entities.HouseEntity>(ctx);
                var items = bs.GetAll().Where(h => h.Community.Region.CityId == options.CityId && h.TypeId == options.TypeId);
                //指定过滤条件区域
                if (options.RegionId != null)
                {
                    items = items.Where(t => t.Community.RegionId == options.RegionId);
                }
                if (options.StartMonthRent != null)
                {
                    items = items.Where(t => t.MonthRent >= options.StartMonthRent);
                }
                if (options.EndMonthRent != null)
                {
                    items = items.Where(t => t.MonthRent <= options.EndMonthRent);
                }
                if (!string.IsNullOrEmpty(options.Keywords))
                {
                    items = items.Where(t => t.Address.Contains(options.Keywords) ||
                                        t.Description.Contains(options.Keywords) ||
                                        t.Community.Name.Contains(options.Keywords) ||
                                        t.Community.Location.Contains(options.Keywords) ||
                                        t.Community.Traffic.Contains(options.Keywords));
                }
                //获取总条数
                long totalCount = items.LongCount();
                items = items.Include(h => h.Community)
                        .Include(nameof(HouseEntity.Community) + "." + nameof(CommunityEntity.Region) + "." + nameof(RegionEntity.City))
                        .Include(nameof(HouseEntity.Community) + "." + nameof(CommunityEntity.Region))
                        .Include(h => h.DecorateStatus)
                        .Include(h => h.HousePics)
                        .Include(h => h.RoomType)
                        .Include(h => h.Status)
                        .Include(h => h.Type)
                        .Include(h => h.Attachments);
                //排序
                switch (options.OrderByType)
                {
                case HouseSearchOrderByType.MonthRentDesc:
                    items = items.OrderByDescending(t => t.MonthRent);
                    break;

                case HouseSearchOrderByType.MonthRentAsc:
                    items = items.OrderBy(t => t.MonthRent);
                    break;

                case HouseSearchOrderByType.AreaDesc:
                    items = items.OrderByDescending(t => t.Area);
                    break;

                case HouseSearchOrderByType.AreaAsc:
                    items = items.OrderBy(t => t.Area);
                    break;

                case HouseSearchOrderByType.CreateDateDesc:
                    items = items.OrderByDescending(t => t.CreateDateTime);
                    break;

                default:
                    items = items.OrderBy(t => t.CreateDateTime);
                    break;
                }
                //分页,一定要先排序在分页,给用户看的页码从1开始,程序中从0开始
                items = items.Skip((options.CurrentIndex - 1) * options.PageSize).Take(options.PageSize);
                HouseSearchResult searchResult = new HouseSearchResult();
                searchResult.totalCount = totalCount;
                List <HouseDTO> dto = new List <HouseDTO>();
                foreach (var item in items)
                {
                    //把数据转存到DTO中
                    dto.Add(ToDTO(item));
                }
                searchResult.result = dto.ToArray();
                return(searchResult);
            }
        }
Exemplo n.º 18
0
        public HouseSearchResult Search(HouseSearchOptions options)
        {
            //先获得所有未被软删除的房源信息
            using (MyDbContext ctx = new MyDbContext())
            {
                BaseService <HouseEntity> bs = new BaseService <HouseEntity>(ctx);
                var items = bs.GetAll().Where(h => h.Communitie.Region.CityId == options.CityId &&
                                              h.TypeId == options.TypeId);
                //regionId可为空,判断不为空再继续过滤
                //拼接查询语句
                //where有返回值的,一定要items = ....;拿到返回值之后重新赋值才有用
                if (options.RegionId != null)
                {
                    items = items.Where(t => t.Communitie.RegionId == options.RegionId);
                }
                if (options.StartMonthRent != null)
                {
                    items = items.Where(t => t.MonthRent >= options.StartMonthRent);
                }
                if (options.EndMonthRent != null)
                {
                    items = items.Where(t => t.MonthRent <= options.EndMonthRent);
                }
                if (!string.IsNullOrEmpty(options.Keywords))
                {
                    items = items.Where(t => t.Address.Contains(options.Keywords) ||
                                        t.Description.Contains(options.Keywords) ||
                                        t.Communitie.Name.Contains(options.Keywords) ||
                                        t.Communitie.Location.Contains(options.Keywords) ||
                                        t.Communitie.Traffic.Contains(options.Keywords));
                }

                //取出总条数
                //log4Net中查看数据库执行语句顺序,count是单独执行一条SQL语句
                //不会把数据取到内存中
                long totalcount = items.LongCount();

                //避免延迟加载
                items = items.Include(h => h.Attachments).Include(h => h.Communitie)
                        .Include(nameof(HouseEntity.Communitie) + "." + nameof(CommunitieEntity.Region)
                                 + "." + nameof(RegionEntity.City))
                        .Include(nameof(HouseEntity.Communitie) + "." + nameof(CommunitieEntity.Region))
                        .Include(h => h.DecorateStatus)
                        .Include(h => h.HousePics)
                        .Include(h => h.RoomType)
                        .Include(h => h.Status)
                        .Include(h => h.Type).Include(h => h.Attachments);


                //查询出来之后排序
                switch (options.OrderByType)
                {
                case HouseSearchOrderByType.AreaAsc:
                    items = items.OrderBy(t => t.Area);
                    break;

                case HouseSearchOrderByType.AreaDesc:
                    items = items.OrderByDescending(t => t.Area);
                    break;

                case HouseSearchOrderByType.CreateDateDesc:
                    items = items.OrderByDescending(t => t.CreateDateTime);
                    break;

                case HouseSearchOrderByType.MonthRentAsc:
                    items = items.OrderBy(t => t.MonthRent);
                    break;

                case HouseSearchOrderByType.MonthRentDesc:
                    items = items.OrderByDescending(t => t.MonthRent);
                    break;
                }

                //一定不要items.Where
                //而要items=items.Where();
                //OrderBy要在Skip和Take之前
                //给用户看的页码从1开始,程序中是从0开始

                //分页
                //假如pagesize=10
                //当前页是第1页,跳过0条,取pagesize条
                //          2        10        10
                items = items.Skip((options.CurrentIndex - 1) * options.PageSize)
                        .Take(options.PageSize);


                //返回结果,返回结果类型为HouseSearchResult
                //在这里遍历数据的时候才会真正查询
                HouseSearchResult searchResult = new HouseSearchResult();
                searchResult.totalCount = totalcount;
                List <HouseDTO> houses = new List <HouseDTO>();
                foreach (var item in items)
                {
                    houses.Add(ToDTO(item));
                }
                searchResult.result = houses.ToArray();
                return(searchResult);
            }
        }
Exemplo n.º 19
0
        public HouseSearchResult Search(HouseSearchOptions options)
        {
            using (ZSZDbContext ctx = new ZSZDbContext())
            {
                BaseService <HouseEntity> bs = new BaseService <HouseEntity>(ctx);
                var items = bs.GetAll().Where(p => p.Community.Region.CityId == options.CityId && p.TypeId == options.TypeId);
                if (options.RegionId != null)
                {
                    items = items.Where(p => p.Community.RegionId == options.RegionId);
                }
                if (options.StartMonthRent != null)
                {
                    items = items.Where(p => p.MonthRent >= options.StartMonthRent);
                }
                if (options.EndMonthRent != null)
                {
                    items = items.Where(p => p.MonthRent <= options.EndMonthRent);
                }
                if (string.IsNullOrWhiteSpace(options.Keywords))
                {
                    items = items.Where(p => p.Address.Contains(options.Keywords) ||
                                        p.Description.Contains(options.Keywords) ||
                                        p.Community.Name.Contains(options.Keywords) ||
                                        p.Community.Location.Contains(options.Keywords) ||
                                        p.Community.Traffic.Contains(options.Keywords)
                                        );
                }

                var totalCount = items.LongCount();

                items = items.Include(h => h.Attachments).Include(h => h.Community)
                        .Include(h => nameof(HouseEntity.Community) + "." + nameof(CommunityEntity.Region)
                                 + "." + nameof(RegionEntity.City))
                        .Include(h => nameof(HouseEntity.Community) + "." + nameof(CommunityEntity.Region))
                        .Include(h => h.DecorateStatus)
                        .Include(h => h.HousePics)
                        .Include(h => h.RoomType)
                        .Include(h => h.Status)
                        .Include(h => h.Type);


                switch (options.OrderByType)
                {
                case OrderByType.MonthRentDesc:
                    items = items.OrderByDescending(p => p.MonthRent);
                    break;

                case OrderByType.MonthRentAsc:
                    items = items.OrderBy(p => p.MonthRent);
                    break;

                case OrderByType.AreaDesc:
                    items = items.OrderByDescending(p => p.Area);
                    break;

                case OrderByType.AreaAsc:
                    items = items.OrderBy(p => p.Area);
                    break;

                case OrderByType.CreateDateDesc:
                    items = items.OrderByDescending(p => p.CreateDateTime);
                    break;

                default:
                    break;
                }
                items = items.Skip((options.CurrentIndex - 1) * options.PageSize).Take(options.PageSize);

                HouseSearchResult searchResult = new HouseSearchResult();
                searchResult.totalCount = totalCount;
                List <HouseDTO> houses = new List <HouseDTO>();
                foreach (var item in items)
                {
                    houses.Add(ToDTO(item));
                }
                searchResult.result = houses.ToArray();
                return(searchResult);
            }
        }