C# Eigenschaften vieler Objekte in einer Liste durchsuchen

estre

Commander
Registriert
Dez. 2005
Beiträge
3.006
Hallo zusammen,

ich habe eine Liste erzeugt die eine Vielzahl an Objekten enthält. Die Objekte sind lediglich mit 2 Eigenschaften und get- bzw. set-Methoden ausgestattet.

also z.B:
Code:
private string vorname = "Hans";
private string nachname = "Meiser";

Nun möchte ich wissen welches der Objekte für Eigenschaft1 (also vorname) einen bestimmten Wert hat (in diesem Fall "Hans"). Trifft dieser Wert zu möchte ich nämlich Eigenschaft 2 des gleichen Objektes auslesen (was in diesem Fall "Meiser" wäre) :)


Versteht ihr wie ich das meine ^^ ?

Wer kann mir da weiterhelfen?

Vielen Dank!

Grüße
 
Das kann man gut mit LINQ machen.

Angenommen du hast 100 gleiche Objekte mit Vor und Nachname in einer Liste:

List<Person> Personen

Dann kannst du per Linq eine neue Liste erstellen die nur Personen mit dem Vornamen "Hans" enhält, indem du

var AlleMitHans = Personen.Where(p=>p.Vorname == "Hans");

benutzt.

p ist dabei ein Lambda Operator, quasi ein virtuelles Objekt von "Person" über das du die Abfrage definierst.

Mit einer For-Each Schleife kannst du dann die neue Liste durchgehen und die Nachnamen auslesen.
 
wow, danke für die Hilfe.

Ich werde das mal ausprobieren!

Grüße

edit:

Also so ganz habe ich das noch nicht verstanden:

Mein Code sieht nun so aus:

Code:
var match = applikationsListe.Where(p => p.strAppID == "{7B4E1F3C-A702-11D2-A336-00C04F7978E0}");


applikationsListe ist meine Liste mit den Objekten
strAppID ist die Eigenschaft die ich prüfen möchte.

Match ist ja eine variable, ich möchte allerdings das Objekt zurückgeliefert haben um auf eine weitere Eigenschaft zugreifen zu können. Funktioniert das so überhaupt ?

Danke!
 
Zuletzt bearbeitet:
Variablen vom Typ var sind implizite Typen. Was aus denen wird, bestimmt nicht der Progarmmierer, sondern der Compiler.

Um bei meinem Beispiel zu bleiben:

Statt

var AlleMitHans = Personen.Where(p=>p.Vorname == "Hans");

könnte man auch

List<Person> AlleMitHans = (List<Person>)Personen.Where(p => p.Vorname == "Hans");

schreiben. Du bekommst aus der Liste mit Personen eine Liste mit Personen zurück, deren Vorname Hans lautet. Die kannst du dann weiterverarbeiten.

Infos zu var -> CSharp-Referenz
 
hmm okay,

in meinem Fall "matcht" allerdings immer nur ein Objekt, deswegen kann ich mir dieses List<Person> (um bei deinem Beispiel zu bleiben) eigtl sparen, oder ?!
Dann stellt sich mir die Frage wie ich mir direkt dieses zutreffende Objekt aus der Liste rausholen kann ,also irgendwie so (was natürlich nicht klappt):

object Ergebnis = applikationsListe.Where(p => p.strAppID == "{7B4E1F3C-A702-11D2-A336-00C04F7978E0}");
 
Wenn die Liste immer genau ein solches Objekt enthält kannst du

object Ergebnis = applikationsListe.Where(p => p.strAppID == "{7B4E1F3C-A702-11D2-A336-00C04F7978E0}").FirstOrDefault();

verwenden. Dieses Anhängsel gibt dir dann genau dieses eine Objekt zurück, oder NULL falls es keins mit den Kriterien gibt.
 
ah jetzt klappt es wunderbar, vielen Dank!
 
Zurück
Oben