コード例 #1
0
        public void Get_students_no_filtered_inlude_no_filter_select_expand_definition()
        {
            ICollection <StudentModel> students = ProjectionOperations <StudentModel, Student> .GetItems
                                                  (
                serviceProvider.GetRequiredService <ISchoolRepository>(),
                serviceProvider.GetRequiredService <IMapper>(),
                new FilterLambdaOperatorParameters
                (
                    new GreaterThanBinaryOperatorParameters
                    (
                        new CountOperatorParameters
                        (
                            new MemberSelectorOperatorParameters("Enrollments", new ParameterOperatorParameters("f"))
                        ),
                        new ConstantOperatorParameters(0)
                    ),
                    typeof(StudentModel),
                    "f"
                ),
                null,
                null
                                                  );

            Assert.Null(students.First().Enrollments);
        }
コード例 #2
0
        public void Delete_A_Single_Entity_Using_Delete()
        {
            //arrange
            var bodyParameter = new EqualsBinaryOperatorParameters
                                (
                new MemberSelectorOperatorParameters("FullName", new ParameterOperatorParameters(parameterName)),
                new ConstantOperatorParameters("Carson Alexander")
                                );

            //act
            DoTest <StudentModel, Student>
            (
                bodyParameter,
                null,
                null,
                parameterName,
                (StudentModel studentModel, ISchoolRepository repository) =>
            {
                IExpressionParameter expressionParameter           = GetFilterParameter <StudentModel>(bodyParameter, parameterName);
                Expression <Func <StudentModel, bool> > expression = ProjectionOperations <StudentModel, Student> .GetFilter
                                                                     (
                    serviceProvider.GetRequiredService <IMapper>().MapToOperator(expressionParameter)
                                                                     );

                PersistenceOperations <StudentModel, Student> .Delete(repository, expression);
            },
                returnValue =>
            {
                Assert.Null(returnValue);
            },
                "$it => ($it.FullName == \"Carson Alexander\")"
            );
        }
コード例 #3
0
        void DoTest <TModel, TData>(IExpressionParameter bodyParameter,
                                    IExpressionParameter queryFunc,
                                    SelectExpandDefinitionParameters expansion,
                                    string parameterName,
                                    Action <TModel, ISchoolRepository> update,
                                    Action <TModel> assert,
                                    string expectedExpressionString) where TModel : LogicBuilder.Domain.BaseModel where TData : LogicBuilder.Data.BaseData
        {
            //arrange
            IMapper              mapper              = serviceProvider.GetRequiredService <IMapper>();
            ISchoolRepository    repository          = serviceProvider.GetRequiredService <ISchoolRepository>();
            IExpressionParameter expressionParameter = GetFilterParameter <TModel>(bodyParameter, parameterName);

            TestExpressionString();
            TestReturnValue();

            void TestReturnValue()
            {
                //act
                TModel returnValue = ProjectionOperations <TModel, TData> .Get
                                     (
                    repository,
                    mapper,
                    expressionParameter,
                    queryFunc,
                    expansion
                                     );

                update(returnValue, repository);

                returnValue = ProjectionOperations <TModel, TData> .Get
                              (
                    repository,
                    mapper,
                    expressionParameter,
                    queryFunc,
                    expansion
                              );

                //assert
                assert(returnValue);
            }

            void TestExpressionString()
            {
                //act
                Expression <Func <TModel, bool> > expression = ProjectionOperations <TModel, TData> .GetFilter
                                                               (
                    mapper.MapToOperator(expressionParameter)
                                                               );

                //assert
                if (!string.IsNullOrEmpty(expectedExpressionString))
                {
                    AssertFilterStringIsCorrect(expression, expectedExpressionString);
                }
            }
        }
コード例 #4
0
        public void Get_students_with_filtered_inlude_with_filter_select_expand_definition()
        {
            ICollection <StudentModel> students = ProjectionOperations <StudentModel, Student> .GetItems
                                                  (
                serviceProvider.GetRequiredService <ISchoolRepository>(),
                serviceProvider.GetRequiredService <IMapper>(),
                new FilterLambdaOperatorParameters
                (
                    new GreaterThanBinaryOperatorParameters
                    (
                        new CountOperatorParameters
                        (
                            new MemberSelectorOperatorParameters("Enrollments", new ParameterOperatorParameters("f"))
                        ),
                        new ConstantOperatorParameters(0)
                    ),
                    typeof(StudentModel),
                    "f"
                ),
                null,
                new SelectExpandDefinitionParameters
                (
                    null,
                    new List <SelectExpandItemParameters>
            {
                new SelectExpandItemParameters
                (
                    "enrollments",
                    new SelectExpandItemFilterParameters
                    (
                        new FilterLambdaOperatorParameters
                        (
                            new EqualsBinaryOperatorParameters
                            (
                                new MemberSelectorOperatorParameters("enrollmentID", new ParameterOperatorParameters("a")),
                                new ConstantOperatorParameters(-1)
                            ),
                            typeof(EnrollmentModel),
                            "a"
                        )
                    ),
                    null,
                    null,
                    null
                )
            }
                )
                                                  );

            Assert.False(students.First().Enrollments.Any());
        }
コード例 #5
0
        public void Get_enrollments_filtered_by_grade_letter()
        {
            ICollection <EnrollmentModel> enrollments = ProjectionOperations <EnrollmentModel, Enrollment> .GetItems
                                                        (
                serviceProvider.GetRequiredService <ISchoolRepository>(),
                serviceProvider.GetRequiredService <IMapper>(),
                new FilterLambdaOperatorParameters
                (
                    new EqualsBinaryOperatorParameters
                    (
                        new MemberSelectorOperatorParameters("GradeLetter", new ParameterOperatorParameters("f")),
                        new ConstantOperatorParameters("A")
                    ),
                    typeof(EnrollmentModel),
                    "f"
                ),
                null,
                null
                                                        );

            Assert.Single(enrollments);
        }
コード例 #6
0
        public void Get_students_with_filtered_inlude_no_filter_sort_skip_and_take_select_expand_definition()
        {
            ICollection <StudentModel> students = ProjectionOperations <StudentModel, Student> .GetItems
                                                  (
                serviceProvider.GetRequiredService <ISchoolRepository>(),
                serviceProvider.GetRequiredService <IMapper>(),
                new FilterLambdaOperatorParameters
                (
                    new AndBinaryOperatorParameters
                    (
                        new EqualsBinaryOperatorParameters
                        (
                            new MemberSelectorOperatorParameters("FirstName", new ParameterOperatorParameters("f")),
                            new ConstantOperatorParameters("Carson")
                        ),
                        new EqualsBinaryOperatorParameters
                        (
                            new MemberSelectorOperatorParameters("LastName", new ParameterOperatorParameters("f")),
                            new ConstantOperatorParameters("Alexander")
                        )
                    ),
                    typeof(StudentModel),
                    "f"
                ),
                null,
                new SelectExpandDefinitionParameters
                (
                    null,
                    new List <SelectExpandItemParameters>
            {
                new SelectExpandItemParameters
                (
                    "enrollments",
                    new SelectExpandItemFilterParameters
                    (
                        new FilterLambdaOperatorParameters
                        (
                            new GreaterThanBinaryOperatorParameters
                            (
                                new MemberSelectorOperatorParameters("enrollmentID", new ParameterOperatorParameters("a")),
                                new ConstantOperatorParameters(0)
                            ),
                            typeof(EnrollmentModel),
                            "a"
                        )
                    ),
                    new SelectExpandItemQueryFunctionParameters
                    (
                        new SortCollectionParameters
                        (
                            new List <SortDescriptionParameters>
                {
                    new SortDescriptionParameters("Grade", ListSortDirection.Descending)
                },
                            1,
                            2
                        )
                    ),
                    null,
                    null
                )
            }
                )
                                                  );

            Assert.Single(students);
            Assert.Equal(2, students.First().Enrollments.Count);
            Assert.Equal("A", students.First().Enrollments.Last().GradeLetter);
        }
コード例 #7
0
        public void Get_students_with_filtered_inlude_no_filter_sorted_select_expand_definition()
        {
            ICollection <StudentModel> students = ProjectionOperations <StudentModel, Student> .GetItems
                                                  (
                serviceProvider.GetRequiredService <ISchoolRepository>(),
                serviceProvider.GetRequiredService <IMapper>(),
                new FilterLambdaOperatorParameters
                (
                    new GreaterThanBinaryOperatorParameters
                    (
                        new CountOperatorParameters
                        (
                            new MemberSelectorOperatorParameters("Enrollments", new ParameterOperatorParameters("f"))
                        ),
                        new ConstantOperatorParameters(0)
                    ),
                    typeof(StudentModel),
                    "f"
                ),
                null,
                new SelectExpandDefinitionParameters
                (
                    null,
                    new List <SelectExpandItemParameters>
            {
                new SelectExpandItemParameters
                (
                    "enrollments",
                    new SelectExpandItemFilterParameters
                    (
                        new FilterLambdaOperatorParameters
                        (
                            new GreaterThanBinaryOperatorParameters
                            (
                                new MemberSelectorOperatorParameters("enrollmentID", new ParameterOperatorParameters("a")),
                                new ConstantOperatorParameters(0)
                            ),
                            typeof(EnrollmentModel),
                            "a"
                        )
                    ),
                    new SelectExpandItemQueryFunctionParameters
                    (
                        new SortCollectionParameters
                        (
                            new List <SortDescriptionParameters>
                {
                    new SortDescriptionParameters("Grade", ListSortDirection.Ascending)
                },
                            null,
                            null
                        )
                    ),
                    null,
                    null
                )
            }
                )
                                                  );

            Assert.True(students.First().Enrollments.Count > 0);
            Assert.True
            (
                string.Compare
                (
                    students.First().Enrollments.First().GradeLetter,
                    students.Skip(1).First().Enrollments.First().GradeLetter
                ) <= 0
            );
        }
コード例 #8
0
ファイル: Program.cs プロジェクト: NeverTheSame/SD
        static void Main(string[] args)
        {
            LogDelegate ld = () =>
            {
                // UpdateDatabase();
                // WriteToEventLog();
                return(true);
            };
            bool status = ld();

            AddDelegate   ad = (a, b) => a + b;
            UpperDelegate up = word => word.ToUpper();

            Console.WriteLine(ad(1, 1));
            Console.WriteLine(up("hello"));
            // DelegatesAndEvents.WorkPerformedHandler del1 = WorkPerformed1;
            // DelegatesAndEvents.WorkPerformedHandler del2 = WorkPerformed2;

            // del1(5, WorkType.Golf);
            // del2(10, WorkType.GenerateReports);



            // Rectangle.Union(r1, r2);
            var rectangles = new[]
            {
                new Rectangle(0, 0, 20, 20),
                new Rectangle(20, 20, 60, 60),
                new Rectangle(80, 80, 20, 20),
            };

            // Console.WriteLine(rectangles.Aggregate(Rectangle.Union));


            var numbers = Enumerable.Range(1, 10);
            var words   = new[] { "one", "two", "three" };


            // Console.WriteLine(words.Aggregate("hello", (p,x) => p + "," + x));
            // Console.WriteLine("We have " + words.Count() + " elements");
            // LINQ.ShowResultList(numbers);

            // Console.WriteLine("Sum = " +
            //                   numbers.Aggregate(
            //                       (p, x) => p+x));

            // seed 1 -> p1
            // p1 2 -> p2
            // p2 3 ...
            // Console.WriteLine("Product = " +
            //                   numbers.Aggregate(1, (p, x) => p*x));

            // var integralTypes = new[] {typeof(int), typeof(short)};
            // var floatingTypes = new[] {typeof(float), typeof(double)};
            // LINQ.ShowResultList(integralTypes
            //     .Concat(floatingTypes)
            //     .Prepend(typeof(bool)));

            // 'System.Linq.Enumerable.Prepend<TSource>(System.Collections.Generic.IEnumerable<TSource>, TSource)'
            // 'ConsoleApp1.LinqDemos.ExtensionMethods.Prepend<T>(System.Collections.Generic.IEnumerable<T>, T)'

            // var numbers = new List<int> {1, 2, 3};
            // Console.WriteLine(numbers.First());
            // Console.WriteLine(numbers.First(x => x > 2));
            // Console.WriteLine(numbers.FirstOrDefault(x => x > 10));

            // Console.WriteLine(new int[]{123}.Single());
            // Console.WriteLine(new int[]{1,2,3}.SingleOrDefault()); // exception
            // Console.WriteLine(new int[]{}.SingleOrDefault()); // works on empty collection
            //
            // Console.WriteLine("Item at position 1: " + numbers.ElementAt(1));
            // Console.WriteLine("Item at position 1: " + numbers.ElementAtOrDefault(4));



            // var arr1 = new[] {1, 2, 3};
            // var arr2 = new[] {1, 2, 3};
            // Console.WriteLine(arr1 == arr2);
            // Console.WriteLine(arr1.Equals(arr2));
            //
            // Console.WriteLine(arr1.SequenceEqual(arr2));
            //
            // var list1 = new List<int>{1,2,3};
            // Console.WriteLine(arr1.SequenceEqual(list1));
            //
            //
            // var people = new Person[]
            // {
            //     new Person("Jane", "*****@*****.**"),
            //     new Person("John", "*****@*****.**"),
            //     new Person("Chris", String.Empty),
            // };
            //
            // var records = new Record[]
            // {
            //     new Record("*****@*****.**", "JaneAtFoo"),
            //     new Record("*****@*****.**", "JaneAtHome"),
            //     new Record("*****@*****.**", "John1980"),
            // };
            // foreach (var person in people)
            // {
            //     Console.WriteLine(person.Email);
            // }

            // var query = people.Join(records,
            //     person => person.Email,
            //     record => record.Mail,
            //     (person, record) => new {Name = person.Name, SkypeId = record.SkypeId}
            // );
            //
            // foreach (var item in query)
            // {
            //     Console.WriteLine(item);
            // }


            object[] values = { 1, 2.5, 3, 4.5 };
            // int[] numbers = {3, 3, 1, 2, 3, 4};
            // LINQ.ShowResultList(numbers.Skip(2).Take(1));
            // LINQ.ShowResultList(numbers.SkipWhile(i => i == 3));
            // Console.WriteLine("Are all numbers greater than 0? " +
            //                   numbers.All(x => x > 0));
            // Console.WriteLine("Are all numbers odd? " +
            //                   numbers.All(x => x % 2 == 1));
            // Console.WriteLine("Any number less than 2? " +
            //                   numbers.Any(x => x < 2));


            // LINQ.ShowResultList(FilteringSortingData.GetIntegers(values));
            IEnumerable <int>  randomNumbersEnumerable  = ProjectionOperations.GetRandomNumbers();
            string             randomNumbersString      = LINQ.DisplayListAsCsvString(randomNumbersEnumerable);
            IEnumerable <char> orderedNumbersEnumerable = randomNumbersString.OrderBy(x => x);

            // Console.WriteLine(LINQ.DisplayListAsCsvString(randomNumbersEnumerable));
            // Console.WriteLine(LINQ.DisplayListAsCsvString(randomNumbersEnumerable.OrderBy(x => x)));
            // Console.WriteLine(LINQ.DisplayListAsCsvString(randomNumbersEnumerable.OrderByDescending(x => x)));

            // string sentence = "This is a test";
            // Console.WriteLine(new string(sentence.Reverse().ToArray()));
            // string word1 = "hello";
            // string word2 = "help!";

            // LINQ.ShowResultList(word1.Distinct());

            // var lettersInBoth = word1.Intersect(word2);
            // LINQ.ShowResultList(lettersInBoth);

            // LINQ.ShowResultList(word1.Union(word2));
            // LINQ.ShowResultList(word1.Except(word2));
        }