2017-12-22 5 views
1

Ich arbeite mit einer Liste von Objekten, und ich muss eines der Objekte auswählen und es einer Variablen zuweisen, um später verwendet zu werden. Ich verstehe, dass ich die .Find() Methode innerhalb der Liste verwenden muss, aber ich bin nicht sicher, was ich in die Klammern setzen müsste, um das korrekte Objekt zu finden. Ich verwende Klassen, die von einem SDK definiert wurden, um mit einer API zu interagieren, was für mich neu ist. Hier ist mein Code:Wie finde ich ein einzelnes Objekt in einer Liste von Objekten?

var fileCabinets = org.GetFileCabinetsFromFilecabinetsRelation().FileCabinet; 
foreach (var fc in fileCabinets) 
{ 
    Console.WriteLine("You have access to the file cabinet " + fc.Name + " " + fc.Id + "."); 
} 

fileCabinets.Find(); 

fileCabinets ist eine Liste des Typs FileCabinet. Ich muss eines der FileCabinets in der Liste auswählen.

+0

Sie definieren nicht, was Sie mit "Liste" meinen. Meinst du eine System.Collections.Generic.List? Oder eine andere Art von Liste? Dadurch wird festgelegt, welche Methoden Sie zum Suchen eines Elements in der Liste verwenden können. Mit anderen Worten, was ist der Typ von FileCabinets? – Polyfun

Antwort

3
FileCabinet fileCabinet = fileCabinets.SingleOrDefault(x => x.(propertyName) == (valueToMatch)); 

Wie @Rainman sagte, wenn es eine Wahrscheinlichkeit gibt, dass der Name nicht eindeutig ist, verwenden Sie seine Lösung. Wenn Sie sicher sind, dass die Name-Eigenschaft eindeutig ist, verwenden Sie diese.

+0

Genau das, was ich gesucht habe, Danke –

+0

Wenn ich Ihnen geholfen habe, bitte markieren Sie meinen Beitrag als Antwort – Maarten

4

Wenn ich Ihre Frage richtig verstanden habe, können Sie FirstOrDefault

var fileCabinet = fileCabinets.FirstOrDefault(x => x.Id == 1); 

verwenden Wenn Sie mit Find()

var fileCabinet = fileCabinets.Find(x => x.Id == 1); 

bleiben wollen Liste filtern, indem Sie Name Eigenschaft

var fileCabinet = fileCabinets.FirstOrDefault(x => x.Name == "Sample"); 
+0

Sie haben mich mit ein paar Minuten geschlagen. Warum haben Sie sich für FirstOrDefault gegenüber SingleOrDefault entschieden? – Maarten

+1

Es gibt keinen Grund. Ich würde sagen, Gewohnheit :) In diesem Fall erwarten wir natürlich nur einen Gegenstand. – lucky

+0

Danke, ich ging mit Maartens Lösung, weil ich nicht unbedingt die Id-Eigenschaft verwenden möchte, in diesem Fall benutze ich tatsächlich die Name-Eigenschaft und seine Antwort duscht mir, wie das geht, aber beide Antworten haben mir sehr geholfen. Danke –

Verwandte Themen