2010-06-04 5 views
2

Comme j'ai toujours une connaissance limitée de LINQ, j'ai pensé que je demanderais comment simplifier cette action. J'essaie d'écrire une déclaration qui sélectionne les clients d'une liste et effectue une action sur les résultats.Comment effectuer une action sur les résultats de .FindAll()

Dire que j'ai:

public List<Customer> Customers 

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

Maintenant que je veux prendre tous les clients qui ont Catégorie == « A » et imprimer leurs c.Names ou un ensemble c.Value = « High ».

Existe-t-il un moyen rapide d'accomplir ceci sans avoir à placer les résultats dans une autre liste et à parcourir chacun d'eux?

Répondre

4

LINQ Where au lieu de FindAll:

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

cette façon devrait être plus efficace, puisque il n'a pas à créer une nouvelle liste.

3

Vous pouvez le faire:

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

Vous pouvez faire ceci:

public List<Customer> Customers 

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