2017-10-05 1 views
0

Ich habe eine Klasse, die im Grunde wie folgt ist:C# Rückgabe von Werten aus einer Liste von Klassen

class myClass 
{ 
    public string id; 
    public string name; 
} 

Wenn ich ein List<myClass> habe, wie ich myClass.name bekommen kann, wenn für die Suche es myClass.id entspricht.

+1

mit linq: myClasses.Where (c => c.id == "id_goes_here"). SingleOrDefault(). Name. Obwohl Sie wahrscheinlich eine bessere Behandlung für den Nullfall wünschen – Robert

Antwort

1

LINQ-Erweiterungsmethoden können dies ziemlich einfach tun.

var classes = new List<myClass>(); 
classes.AddRange(classesToAdd); 

var foundClassName = classes.Single(x => x.id == idToSearchFor).name; 
1

Ich brauche ein wenig mehr auf zu gehen ... Sie einen Code schreiben sollten, wenn Sie versuchen, ... sonst wirst du erraten-Antworten ... aber trotzdem:

var list = new List<myClass>(); 
//add entries 

var name = list.First(x => x.id == myId).name; 

Wenn nulls ein Potential sind, können Sie FirstOrDefault und null Bedingungsoperator verwenden:

var name = list.FirstOrDefault(x => x.id == myId)?.name; 
2

Dies ist, wie Sie es tun können.

Durchsuchen Sie Ihre Klassenliste mit wo.

Holen Sie sich das Element FirstOrDefault().

Wenn ein Element gefunden wird, gibt First oder Default es zurück, andernfalls gibt es null zurück. Auf Null prüfen, wenn das Element nicht null ist, den Namen abrufen.

void Main() 
{ 
    List<myClass> classList = new List<myClass>(); 
    classList.Add(new myClass(){id="1", name="A"}); 
    classList.Add(new myClass(){id="2", name="B"}); 
    classList.Add(new myClass(){id="3", name="C"}); 
    classList.Add(new myClass(){id="4", name="D"}); 
    classList.Add(new myClass(){id="5", name="E"}); 

    var element = classList.Where(t=>t.id=="5").FirstOrDefault(); 
    if(element != null) 
    { 
     var name = element.name; 
     Console.WriteLine(name); 
    } 
} 

class myClass 
{ 
    public string id; 
    public string name; 
} 
+0

Ich mag diesen Ansatz. Vielen Dank! –

+0

da wir über IDs sprechen, hoffentlich ist das funktional. Wenn Sie jedoch in Zukunft gegen etwas angehen wollten, das eindeutig sein sollte, aber es keine Steuerelemente gibt, mit denen Sie dies erzwingen könnten, würden Sie am Ende des ersten solchen Elements hängen bleiben. Also, wenn Sie das Konto für [email protected] greifen mussten, aber versehentlich ein zweites Konto mit dieser E-Mail-Adresse erstellt haben, würden Sie die erste Instanz davon im Wesentlichen mit der 2. in der Schwebe ziehen. – Robert

+0

Ja, das ist richtig. Aber die Frage bezieht sich auch auf den Namen eines einzelnen Gegenstandes. – Amit

Verwandte Themen