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