2009-08-01 14 views
7

Ich habe die folgende Liste ArtikelErste ein Element in einer Liste

public List<Configuration> Configurations 
{ 
    get; 
    set; 
} 

public class Configuration 
    { 
    public string Name 
    { 
     get; 
     set; 
    } 
    public string Value 
     { 
     get; 
     set; 
    } 
} 

Wie kann ich einen Artikel in der Konfiguration, wo Name = Wert ziehen?

Zum Beispiel: sagen wir, ich habe 100 Konfigurationsobjekte in dieser Liste.

Wie kann ich: Configurations.name [ "MyConfig"]

So etwas wie das?

UPDATE: Lösung für .net v2 bitte

Antwort

16

Mit der List<T>.Find Methode in C# 3.0:

var config = Configurations.Find(item => item.Name == "myConfig"); 

In C# 2.0/.NET 2.0 Sie so etwas wie die folgende (Syntax verwenden könnte etwas weg sein, wie ich die Delegierten auf diese Weise nicht geschrieben haben, in eine recht lange Zeit ...):

Configuration config = Configurations.Find(
    delegate(Configuration item) { return item.Name == "myConfig"; }); 
+0

Wird diese Arbeit in .net v2? –

+0

Dank Greg, genau das, was ich wissen wollte, ist das in Ordnung Speicher, um einen Delegierten zu verwenden? –

+0

@JL - Die ursprüngliche Antwort erfordert C# 3.0/.NET3.5, aber ich habe eine hinzugefügt, die mit C# 2.0/.NET2.0 funktioniert. –

0

Versuchen List(T).Find (C# 3.0):

string value = Configurations.Find(config => config.Name == "myConfig").Value; 
2

Betrachten wir ein Wörterbuch verwenden, aber wenn nicht:


Sie Frage mich nicht ganz klar war, einer von beiden sollte Ihre Antwort sein.

Linq mit:

var selected = Configurations.Where(conf => conf.Name == "Value"); 

oder

var selected = Configurations.Where(conf => conf.Name == conf.Value); 

Wenn Sie wollen, dass es in einer Liste:

List<Configuration> selected = Configurations 
    .Where(conf => conf.Name == "Value").ToList(); 

oder

List<Configuration> selected = Configurations 
    .Where(conf => conf.Name == conf.Value).ToList(); 
0

Hier ist eine Art und Weise Sie nutzen könnten:

static void Main(string[] args) 
     { 
      Configuration c = new Configuration(); 
      Configuration d = new Configuration(); 
      Configuration e = new Configuration(); 

      d.Name = "Test"; 
      e.Name = "Test 23"; 

      c.Configurations = new List<Configuration>(); 

      c.Configurations.Add(d); 
      c.Configurations.Add(e); 

      Configuration t = c.Configurations.Find(g => g.Name == "Test"); 
     } 
+0

Syntaxfehler ... – EricSchaefer

Verwandte Themen