Esempio n. 1
0
        static void Main(string[] args)
        {
            List <Person> persons = new List <Person>();

            persons.AddRange(new[] {
                new Person("Robert", "MALE", "SINGLE"),
                new Person("John", "MALE", "MARRIED"),
                new Person("Laura", "FEMALE", "MARRIED"),
                new Person("Diana", "FEMALE", "SINGLE"),
                new Person("Mike", "MALE", "SINGLE"),
                new Person("Bobby", "MALE", "SINGLE")
            });

            ICriteria male           = new CriteriaMale();
            ICriteria female         = new CriteriaFemale();
            ICriteria single         = new CriteriaSingle();
            ICriteria singleMale     = new AndCriteria(single, male);
            ICriteria singleOrFemale = new OrCriteria(single, female);

            Console.WriteLine("Males:");
            PrintPersons(male.MeetCriteria(persons));

            Console.WriteLine("Females:");
            PrintPersons(female.MeetCriteria(persons));

            Console.WriteLine("Single Males");
            PrintPersons(singleMale.MeetCriteria(persons));

            Console.WriteLine("Single Or Females");
            PrintPersons(singleOrFemale.MeetCriteria(persons));

            Console.ReadKey();
        }
Esempio n. 2
0
        public static void Run()
        {
            var categoryCriteria = new CategoryCriteria(Category.Books);
            var priceCriteria    = new PriceCriteria(20);
            var andCriteria      = new AndCriteria(new List <Criteria> {
                categoryCriteria, priceCriteria
            });

            var products = new List <Product> {
                new Product {
                    Id = 1, Name = "CLR via C#", Category = Category.Books, Price = 20
                },
                new Product {
                    Id = 2, Name = "Think in Java", Category = Category.Books, Price = 40
                },
                new Product {
                    Id = 3, Name = "Hungry Jack Pancake Mix", Category = Category.Food, Price = 20
                }
            };

            var filteredProducts = products.FindAll(p => andCriteria.Meet(p));

            filteredProducts.ForEach(p => Console.WriteLine($"Product ID: {p.Id}, Product Name: {p.Name}"));
        }