Mens jeg søkte etter et svar på dette spørsmålet, har jeg støtt på lignende som bruker LINQ, men jeg har ikke vært i stand til å forstå dem fullt ut (og dermed implementere dem), ettersom jeg ikke er kjent med det. Det jeg vil, i utgangspunktet, er dette:
Jeg vet ærlig talt ikke hvordan jeg ville gå frem for å gjøre det. Det jeg kan komme opp med er dette (ikke fungerer, selvfølgelig):
if (myList.Contains(myString))
string element = myList.ElementAt(myList.IndexOf(myString));
Jeg vet HVORFOR det ikke fungerer:
myList.Contains()
returnerer ikke true
, siden den vil sjekke om et helt element i listen samsvarer med strengen jeg spesifiserte.Likevel, jeg har ingen anelse om hvordan å løse dette problemet, men jeg skjønner jeg'll har til å bruke LINQ som foreslått i lignende spørsmål til meg. Når det er sagt, hvis det er tilfelle her, vil jeg gjerne at svareren skal forklare meg bruken av LINQ i deres eksempel (som sagt, jeg har ikke gidd med det i min tid med C #). På forhånd takk gutter (og jenter?).
EDIT: Jeg har kommet opp med en løsning; bare sløyfe gjennom listen, sjekk om gjeldende element inneholder strengen og deretter sette en streng lik gjeldende element. Jeg lurer imidlertid på om det er en mer effektiv måte enn dette?
string myString = "bla";
string element = "";
for (int i = 0; i < myList.Count; i++)
{
if (myList[i].Contains(myString))
element = myList[i];
}
Du bør kunne bruke Linq her:
var matchingvalues = myList
.Where(stringToCheck => stringToCheck.Contains(myString));
Hvis du bare ønsker å returnere det første samsvarende elementet:
var match = myList
.FirstOrDefault(stringToCheck => stringToCheck.Contains(myString));
if(match != null)
//Do stuff