2009-08-01 14 views
7

Mam następujący element listyPierwsze pozycję na liście

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

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

Jak mogę wyciągnąć element konfiguracji gdzie nazwa = wartość?

Na przykład: powiedzmy, że mam 100 obiektów konfiguracyjnych na tej liście.

Jak mogę dostać: Configurations.name [ "myconfig"]

coś takiego?

AKTUALIZACJA: Rozwiązanie NET v2 prosimy

Odpowiedz

16

stosując metodę List<T>.Find w C# 3.0:

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

w C# 2.0/.NET 2.0 można użyć coś jak poniżej (składni mógł być lekko wyłączony, ponieważ nie pisałem delegatów w ten sposób od dłuższego czasu ...):

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

Czy to zadziała w .net v2? –

+0

Dzięki Greg, dokładnie to, co chciałem wiedzieć, czy ta pamięć jest mądra, aby użyć delegata? –

+0

@JL - Oryginalna odpowiedź wymaga C# 3.0/.NET3.5, ale dodałem taką, która będzie działać z C# 2.0/.NET2.0 –

0

Wypróbuj List(T).Find (C# 3.0):

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

Rozważ użycie słowniku, ale jeśli nie:


ty pytanie nie było do końca jasne dla mnie, jeden z obu powinna być odpowiedź.

użyciu LINQ:

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

lub

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

Jeśli chcesz je w formie listy:

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

lub

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

Oto jeden ze sposobów można użyć:

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

Błąd składniowy ... – EricSchaefer

Powiązane problemy