コード例 #1
0
ファイル: PagingService.cs プロジェクト: serkankayaa/gamgid
        public IQueryable<T> PageFilter<T>(IQueryable<T> data, GamgidModel gamgidModel) where T : class
        {
            if (data == null)
            {
                throw new ArgumentNullException(nameof(data));
            }

            if (gamgidModel == null)
            {
                throw new ArgumentNullException(nameof(gamgidModel));
            }

            IQueryable<T> result = Paging(data, gamgidModel);

            result = Filter(result, gamgidModel);

            return result;
        }
コード例 #2
0
ファイル: PagingService.cs プロジェクト: serkankayaa/gamgid
        private static IQueryable<T> Filter<T>(IQueryable<T> result, GamgidModel gamgidModel) where T : class
        {
            switch (gamgidModel.SearchCondition)
            {
                case PagingConsts.Contains:
                    return result.Where(c => gamgidModel.SearchValue.Contains(c.GetType().GetProperty(gamgidModel.SearchKey).GetValue(c).ToString())).AsQueryable();
                case PagingConsts.Equals:
                    return result.Where(c => gamgidModel.SearchValue == c.GetType().GetProperty(gamgidModel.SearchKey).GetValue(c).ToString()).AsQueryable();
                case PagingConsts.GreaterThan:
                    CheckIsNumber(gamgidModel.SearchValue);

                    return result.Where(c => int.Parse(gamgidModel.SearchValue) > int.Parse(c.GetType().GetProperty(gamgidModel.SearchKey).GetValue(c).ToString())).AsQueryable();
                case PagingConsts.GreaterThanOrEqual:
                    CheckIsNumber(gamgidModel.SearchValue);

                    return result.Where(c => int.Parse(gamgidModel.SearchValue) >= int.Parse(c.GetType().GetProperty(gamgidModel.SearchKey).GetValue(c).ToString())).AsQueryable();
                case PagingConsts.LessThan:
                    CheckIsNumber(gamgidModel.SearchValue);

                    return result.Where(c => int.Parse(gamgidModel.SearchValue) < int.Parse(c.GetType().GetProperty(gamgidModel.SearchKey).GetValue(c).ToString())).AsQueryable();
                case PagingConsts.LessThanOrEqual:
                    CheckIsNumber(gamgidModel.SearchValue);

                    return result.Where(c => int.Parse(gamgidModel.SearchValue) <= int.Parse(c.GetType().GetProperty(gamgidModel.SearchKey).GetValue(c).ToString())).AsQueryable();
                case PagingConsts.NotContains:
                    return result.Where(c => !gamgidModel.SearchValue.Contains(c.GetType().GetProperty(gamgidModel.SearchKey).GetValue(c).ToString())).AsQueryable();
                case PagingConsts.NotEquals:
                    return result.Where(c => gamgidModel.SearchValue != c.GetType().GetProperty(gamgidModel.SearchKey).GetValue(c).ToString()).AsQueryable();
                case PagingConsts.NotStartsWith:
                    return result.Where(c => !gamgidModel.SearchValue.StartsWith(c.GetType().GetProperty(gamgidModel.SearchKey).GetValue(c).ToString())).AsQueryable();
                case PagingConsts.StartsWith:
                    return result.Where(c => gamgidModel.SearchValue.StartsWith(c.GetType().GetProperty(gamgidModel.SearchKey).GetValue(c).ToString())).AsQueryable();
                default:
                    return result;
            }
        }
コード例 #3
0
ファイル: PagingService.cs プロジェクト: serkankayaa/gamgid
 private static IQueryable<T> Paging<T>(IQueryable<T> data, GamgidModel gamgidModel) where T : class
 {
     return data.Skip(gamgidModel.PageSize * gamgidModel.PageNumber).Take(gamgidModel.PageSize);
 }