Mentre cercavo una risposta a questa domanda, mi sono imbattuto in altre simili utilizzando LINQ, ma non sono stato in grado di capirle appieno (e quindi implementarle), poiché non ho familiarità con esso. Quello che vorrei, fondamentalmente, è questo:
Onestamente non so come farei a farlo. Quello che mi viene in mente è questo (non funziona, ovviamente):
if (myList.Contains(myString))
string element = myList.ElementAt(myList.IndexOf(myString));
So perché non funziona:
myList.Contains()
non restituisce true
, poiché controllerà se un intero elemento della lista corrisponde alla stringa che ho specificato.myList.IndexOf()
non troverà un'occorrenza, poiché, come è il caso di nuovo, controllerà se un elemento corrisponde alla stringa.Ancora, non ho idea di come risolvere questo problema, ma immagino che dovrò usare LINQ come suggerito in domande simili alla mia. Detto questo, se questo è il caso qui, mi piacerebbe che chi risponde mi spiegasse l'uso di LINQ nel suo esempio (come ho detto, non mi sono preoccupato di usarlo nel mio tempo con C#). Grazie in anticipo ragazzi (e ragazze?).
EDIT: Ho trovato una soluzione; basta fare un loop attraverso la lista, controllare se l'elemento corrente contiene la stringa e poi impostare una stringa uguale all'elemento corrente. Mi sto chiedendo, però, c'è 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];
}
Dovreste essere in grado di usare Linq qui:
var matchingvalues = myList
.Where(stringToCheck => stringToCheck.Contains(myString));
Se vuoi semplicemente restituire il primo elemento corrispondente:
var match = myList
.FirstOrDefault(stringToCheck => stringToCheck.Contains(myString));
if(match != null)
//Do stuff