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); }
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\")" ); }
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); } } }
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()); }
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); }
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); }
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 ); }
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)); }