由于我对LINQ知之甚少,我想我会问如何简化这个动作。我正在尝试编写一个从列表中选择Customers并对结果执行某些操作的语句。
说我有:
public List<Customer> Customers
Customers.FindAll(delegate(Customer c) { return c.Category == "A"; });
现在说我想把所有拥有Category ==“A”的客户打印出来并打印他们的c.Names或设置c.Value =“High”。
有没有一种快速的方法可以实现这一点,而无需将结果放在另一个列表中并迭代每个列表?
答案 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));