使用包含参数的List过滤集合

时间:2011-11-01 16:57:39

标签: c# .net linq

我有一组客户,其中包含CustomerId,CustomerName和其他一些列。

我正在传递一个ID列表以过滤集合。

这是多久了 - 在这个例子中,'filteredCustomers'应该包含customerId为3或5的客户。

List<int> customerIds = new List<int>();
customerIds.Add(3);
customerIds.Add(5);

var filteredCustomers = from Customer in Customers.Where(x=>x.CustomerId).Contains(customerIds);

我做错了什么 - 非常感谢任何帮助。

4 个答案:

答案 0 :(得分:4)

您可以使用:

var filteredCustomers = Customers.Where(x => customerIds.Contains(x.CustomerId));

但是,我强烈建议您使用HashSet<T>代替List<T>,因为如果您将来添加更多数字,它会使Contains检查速度大大加快。这看起来像是:

var customerIds = new HashSet<int>();
customerIds.Add(3);
customerIds.Add(5);

var filteredCustomers = Customers.Where(x => customerIds.Contains(x.CustomerId));

答案 1 :(得分:2)

from Customer in Customers
where customerIDs.Contains(Customer.CustomerId);

答案 2 :(得分:1)

var filteredCustomers = Customers.Where(x=>customerIds.Contains(x.CustomerId));

答案 3 :(得分:0)

var byCustIds = from d in Customers
                where customerIDs.Contains(d.CustomerId)
                select d;