如何对.FindAll()的结果执行操作

时间:2010-06-04 13:16:00

标签: c# linq

由于我对LINQ知之甚少,我想我会问如何简化这个动作。我正在尝试编写一个从列表中选择Customers并对结果执行某些操作的语句。

说我有:

public List<Customer> Customers

Customers.FindAll(delegate(Customer c) { return c.Category == "A"; });

现在说我想把所有拥有Category ==“A”的客户打印出来并打印他们的c.Names或设置c.Value =“High”。

有没有一种快速的方法可以实现这一点,而无需将结果放在另一个列表中并迭代每个列表?

3 个答案:

答案 0 :(得分:4)

使用Linq Where代替FindAll

foreach (var c in Customers.Where(c => c.Category == "A"))
{
    Console.WriteLine(c.Name);
    c.Value = "High";
}

这种方式应该更有效率,因为它不必创建新列表。

答案 1 :(得分:3)

你可以这样做:

Customers.FindAll(delegate(Customer c) { return c.Category == "A"; })
    .ForEach(c => Console.WriteLine(c.Name));

答案 2 :(得分:2)

你可以这样做:

public List<Customer> Customers

Customers.FindAll(delegate(Customer c) { return c.Category == "A"; }).ForEach(c => Console.WriteLine(c.Names));