Autor Beitrag
braincom654
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 32



BeitragVerfasst: Fr 07.02.14 10:53 
Hier schnell ein Beispeil Code:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
public class Person
  {
    public int ID { get; set; }
    public string Name { get; set; }
    public MyClass2 MyClass2 { get; set; }
  }
  public class Main
  {
    public void Do()
    {
      var collection = new List<Person>();
      var itemOne = collection["Hansi"];
    }
  }


Wie ihr seht habe ich eine Liste von einer Klasse die ich selbst geschrieben habe. Nun möchte ich aber bei der Liste keinen index angeben, sondern beispielsweise einen string angeben der dannn den Namen sucht. Das ist nur ein Beispiel, ich möchte nur das Prinzip verstehen ob das überhaupt möglich ist. Wenn ja, dann wie?
Ich weiß mit linq würde es sehr einfach gehen usw. Aber für meinem Fall muss das auf diese Art und Weise klappen. Bin über jede Anwort froh. Danke.

Moderiert von user profile iconTh69: Titel geändert (Gerneric -> Generic)
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Fr 07.02.14 10:57 
Hallo!

Du könntest ein Dictionary<string, Person> verwenden. Dabei würde der Schlüssel (also in Deinem Fall "Hansi") aber nicht aus der Eigenschaft "Name" der Klasse bezogen, sondern wäre davon unabhängig.

Viele Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".

Für diesen Beitrag haben gedankt: braincom654
braincom654 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 32



BeitragVerfasst: Fr 07.02.14 11:02 
Super schnelle Antwort, danke. :)

Wäre eine Lösung, aber auf mein Projekt leider nicht übertragbar. Habe nur wenig Erfahrung mit Gernerischen Klassen. Ich brauche einfach ein IEnumerable<meineklasse>. Kann ich Selbst so ein IEnumerable schreiben und die Index suche auf anpassen?PS. Wie heißt der Fachausdruck den für list[] diese Funktion? Hilft vielleicht beim googleln weiter. :)
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 07.02.14 11:07 
Wenn die Signatur zum Suchen in der List so sein soll must du eine Liste schreiben die das kann also von List ableiten, einen passenden Indexer verpassen und dann eben diese anstatt List<Person> verwenden.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
public class PersonList : List<Person>
{
    public Person this[string name]
    {
        get
        {
            return this.FirstOrDefault(x => x.Name == name); // gibt nur den ersten zurück der so heißt!!!
        }
    }
}

Für diesen Beitrag haben gedankt: braincom654
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 07.02.14 11:09 
Zitat:
Wie heißt der Fachausdruck den für list[] diese Funktion?


Der Array Operator,ich nenn denn so heißt, heißt Indexer ;)

Für diesen Beitrag haben gedankt: braincom654