Linq to objects filtering IN and not in

Ищу пример, где я могу фильтровать коллекцию на основе некоторых критериев фильтрации.

Я искал пример, в котором, задав список / массив, я могу фильтровать коллекцию.

В примере ниже в моем методе find я пытаюсь фильтровать на основе 2 значений, ищу что-то вроде функции "IN", какие-нибудь предложения?

        class Program
        {
            static void Main()
            {
                //Print all customres that belong to below deparments and match on surname
                var criteria=new Criteria
                                 {
                                     Departments = new List<string> {"BusinessAnalyst", "Account"},
                                     Surname = "Bloggs"
                                 };

                List<Customer> customers = Repository.Find(criteria);

                customers.ForEach(x => Console.WriteLine(string.Format("Surname: {0} Department :{1}", x.Surname,x.Department)));

                Console.Read();
            }
        }

        public class Repository
        {
           public static List<Customer>GetCustomers()
            {
                return  new List<Customer>
                                    {
                                        new Customer { Name = "Jon",Surname="Smith",Department = DepartmentType.Managers},
                                        new Customer{Name = "Bill",Surname = "Gates",Department = DepartmentType.Managers},
                                        new Customer { Name = "Mary",Surname = "Bug",Department = DepartmentType.Developers},
                                        new Customer { Name = "Mark",Surname="Boo",Department = DepartmentType.Account},
                                        new Customer{Name = "Ron",Surname = "Scott",Department = DepartmentType.Managers},
                                        new Customer { Name = "Jonny",Surname = "Dip",Department = DepartmentType.Developers},
                                        new Customer { Name = "Mary",Surname = "Bloggs",Department = DepartmentType.BusinessAnalyst},

                                        new Customer { Name = "Mary",Surname = "Bug",Department = DepartmentType.Account},
                                        new Customer { Name = "Jonny",Surname = "Dip",Department = DepartmentType.Account},
                                        new Customer { Name = "Mary",Surname = "Bloggs",Department = DepartmentType.Managers}
                                    };
            }

           public static List<Customer> Find(Criteria criteria)
           {
               List<Customer>customers=Repository.GetCustomers();

               //Filter on departments
               //ERROR HERE AS I cannot do this "IN" would be fantastic.
               customers = customers.Contains(criteria.Departments);

               //now filter on name
               customers = customers.Where(x => x.Surname == criteria.Surname).ToList();


               return customers;
           }
        }

        public enum DepartmentType
        {
            Account,
            Managers,
            Developers,
            BusinessAnalyst
        }
        public class Customer
        {
            public string Name { get; set; }
            public string Surname { get; set; }
            public DepartmentType Department { get; set; }

        }
        public class Criteria
        {
            public Criteria()
            {
                Departments=new List<string>();
            }
            public string Name { get; set; }
            public string Surname { get; set; }
            public List<string> Departments { get; set; }
        }
0
задан user712923 16 October 2011 в 16:03
поделиться