Überprüfen Sie, ob das Element an Position [x] in der Liste vorhanden ist


84

Wenn ich eine Liste von Zeichenfolgen habe

List<String> list = new list<String>();
list.add("str1");
list.add("str2");
list.add("str3");

und ich möchte wissen, ob beispielsweise Indexposition 2 ein Element enthält. Gibt es eine einfache Möglichkeit, dies zu tun, ohne die Länge der Liste zu zählen oder einen try catch zu verwenden?

Da dies fehlschlagen wird, kann ich es mit einem Versuch fangen, aber das scheint übertrieben

if(list.ElementAt(2) != null)
{
   // logic
}

Antworten:


207
if(list.ElementAtOrDefault(2) != null)
{
   // logic
}

ElementAtOrDefault () ist Teil des System.LinqNamespace.

Obwohl Sie eine Liste haben, können Sie diese verwenden list.Count > 2.


4
Schneller zu lesen als die reguläre .Count-Prüfung, aber bitte beachten Sie, dass "null" -Elemente innerhalb der Liste theoretisch gültig sind. Verlassen Sie sich also nicht darauf, um eine Ausnahme auszulösen, wenn der Test nicht erfüllt ist.
Nach dem

1
Sie können die ?? Betreiber dh. list.ElementAtOrDefault(2)??defaultvalue
George Kargakis

11
if (list.Count > desiredIndex && list[desiredIndex] != null)
{
    // logic
}

5
Selbst wenn list.Count> gewünschterIndex erfüllt ist, wird beim Abrufen des Elements eine Ausnahme
ausgelöst,

2
Nun, das ist Nitpicking. gewünschter Index wird wahrscheinlich eine positive Zahl sein. Wenn dies keine verlässliche Behauptung ist, fügen Sie einfach den gewünschten Index> -1 hinzu.
SubjectX

@SubjectX - Nicht nitpicking. Es ist üblich, einen zurückgegebenen Index zu IndexOfverwenden, der -1 sein kann
Kyle Delaney

0
int? here = (list.ElementAtOrDefault(2) != 0 ? list[2]:(int?) null);

Von Nur-Code-Antworten wird abgeraten, da sie nicht erklären, wie sie das Problem lösen. Bitte aktualisieren Sie Ihre Antwort, um zu erklären, wie sich dies gegenüber den anderen akzeptierten und positiv bewerteten Antworten verbessert, die diese Frage bereits hat. Außerdem ist diese Frage 7 Jahre alt. Ihre Bemühungen würden von Benutzern, die kürzlich unbeantwortete Fragen haben, mehr geschätzt. Bitte überprüfen Sie, wie ich eine gute Antwort schreibe .
FluffyKitten
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.