Durante la ricerca di una risposta a questa domanda, mi sono imbattuto in altri simili utilizzando LINQ ma non sono stato in grado di comprenderli pienamente (e quindi implementarli), poiché non ne ho familiarità. Quello che vorrei, in sostanza, è questo:
- Controlla se qualche elemento di un elenco contiene una stringa specifica.
- In tal caso, ottieni quell'elemento.
Onestamente non so come farei per farlo. Quello che posso trovare è questo (non funziona, ovviamente):
if (myList.Contains(myString))
string element = myList.ElementAt(myList.IndexOf(myString));
So PERCHÉ non funziona:
myList.Contains()
non ritornatrue
, poiché verificherà se un intero elemento dell'elenco corrisponde alla stringa specificata.myList.IndexOf()
non troverà una ricorrenza, poiché, come accade di nuovo, verificherà la presenza di un elemento corrispondente alla stringa.
Tuttavia, non ho idea di come risolvere questo problema, ma immagino che dovrò usare LINQ come suggerito in domande simili alle mie. Detto questo, se è il caso qui, vorrei che il rispondente mi spiegasse l'uso di LINQ nel loro esempio (come ho detto, non mi sono preoccupato ai miei tempi con C #). Grazie in anticipo ragazzi (e ragazze?).
EDIT: ho trovato una soluzione; basta scorrere l'elenco, verificare se l'elemento corrente contiene la stringa e quindi impostare una stringa uguale all'elemento corrente. Mi chiedo, però, esiste un modo più efficiente di questo?
string myString = "bla";
string element = "";
for (int i = 0; i < myList.Count; i++)
{
if (myList[i].Contains(myString))
element = myList[i];
}
myString
, nel tuo ciclo corrente otterrai l'ultimo elemento. Dipende da te se vuoi trovare il primo o l'ultimo, se vuoi solo trovare il primo, quindi interrompere il ciclo dopo aver trovato l'oggetto.