2010-10-16 10 views
45

Se ho una lista di stringheControllare se l'elemento nella posizione [x] esiste nella lista

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

e vorrei sapere se per esempio posizione di indice 2 contiene un elemento, c'è un modo semplice di facendo ciò senza contare la lunghezza dell'elenco o utilizzando un catch di prova?

quanto ciò fallire, posso ottenere intorno ad esso con un tentativo di cattura, ma questo sembra eccessivo

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

Prova list.Count> = 2 –

risposta

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

ElementAtOrDefault() fa parte del namespace System.Linq.

Anche se si dispone di un elenco, in modo da poter utilizzare list.Count > 2.

+1

Più veloce da leggere rispetto alla normale controllo Count, ma tieni presente che gli elementi "nulli" sono teoricamente validi all'interno della lista, in modo da non fare affidamento su questo per lanciare un'eccezione se il test non è soddisfatto. – AFract

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

anche se list.Count> desiredIndex è soddisfatto, il recupero dell'elemento genererà un'eccezione se l'indice <0 – AFract

+0

beh, questo è nitpicking. desiredIndex sarà probabilmente un numero positivo. Se questo non è un reclamo affidabile, basta aggiungere desideratoIndex> -1 .. – SubjectX

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

Le risposte di solo codice sono scoraggiate perché non spiegano come risolvono il problema. Si prega di aggiornare la risposta per spiegare come questo migliora le altre risposte accettate e potenziate che questa domanda ha già. Inoltre, questa domanda ha 7 anni, i tuoi sforzi sarebbero più apprezzati dagli utenti che hanno domande senza risposta recenti. Si prega di rivedere [Come scrivere una buona risposta] (https://stackoverflow.com/help/how-to-answer). – FluffyKitten

Problemi correlati