示例#1
0
        public void Filter_Order_WhenOrderFilterNonFilterInputIsPassed_ShouldReturnOrderedQueryable()
        {
            var filterInput = new List <FilterInput> {
                new FilterInput
                {
                    Operation = OperationTypeEnum.GreaterThanOrEqual,
                    Property  = "Date",
                    Value     = "2017/04/07",
                    Type      = InputTypeEnum.String
                },
                new FilterInput
                {
                    Operation = OperationTypeEnum.LessThanOrEqual,
                    Property  = "Date",
                    Value     = "2017/04/10",
                    Type      = InputTypeEnum.String
                }
            };


            var nonFilterInput = new Dictionary <string, string>
            {
                { "TestName1", "TestValue1" },
                { "TestName2", "TestValue2" },
                { "TestName3", "TestValue3" }
            };


            var orderInput = new List <OrderInput>
            {
                new OrderInput
                {
                    Property = "Number",
                    Order    = OrderTypeEnum.Desc
                }
            };

            var orderFilterInput = new OrderFilterNonFilterInput()
            {
                Order     = orderInput,
                Filter    = filterInput,
                NonFilter = nonFilterInput
            };

            var filteredResult = Mock.QueryableItems.Filter(orderFilterInput);

            var normalResult = Mock.QueryableItems.Where(p => (string.Compare(p.Date, "2017/04/07") >= 0) &&
                                                         (string.Compare(p.Date, "2017/04/10") <= 0))
                               .OrderByDescending(p => p.Number);

            AssertUtil.EnumarableAreEqual(filteredResult, normalResult);
        }
示例#2
0
        public void Filter_Order_WhenJustOrderIsPassed_AndItsPropertyIsInteger_ShouldReturnOrderedQueryable()
        {
            var orderInput = new List <OrderInput>
            {
                new OrderInput
                {
                    Property = "Number",
                    Order    = OrderTypeEnum.Desc
                }
            };

            var orderFilterInput = new OrderFilterNonFilterInput()
            {
                Order = orderInput
            };

            var filteredResult = Mock.QueryableItems.Filter(orderFilterInput);

            var normalResult = Mock.QueryableItems.OrderByDescending(p => p.Number);

            AssertUtil.EnumarableAreEqual(filteredResult, normalResult);
        }
示例#3
0
 public static IOrderedQueryable <T> DynamicQueryNetFilter <T>(this IQueryable <T> input, OrderFilterNonFilterInput orderFilterInput) => (IOrderedQueryable <T>)((IOrderedQueryable <T>)orderFilterInput != null ? input.DynamicQueryNetFilter(orderFilterInput.Filter).DynamicQueryNetOrder(orderFilterInput.Order) : input);
示例#4
0
 public static IOrderedQueryable <T> Filter <T>(this IQueryable <T> input, OrderFilterNonFilterInput orderFilterInput)
 {
     return((IOrderedQueryable <T>)(orderFilterInput != null ?
                                    input.Filter(orderFilterInput.Filter).Order(orderFilterInput.Order) : input));
 }