Ich habe so eine Liste und möchte in dieser Liste nach einem Teilstring suchen können, der von einem anderen String kommt. Beispiel:
List<string> list = new List<string>();
string srch = "There";
list.Add("1234 - Hello");
list.Add("4234 - There");
list.Add("2342 - World");
Ich möchte in meiner Liste nach "There"
suchen und "4234 - There"
zurückgeben. Ich habe es versucht:
var mySearch = list.FindAll(S => s.substring(srch));
foreach(var temp in mySearch)
{
string result = temp;
}
Mit Linq das erste Ergebnis abrufen:
string result = list.FirstOrDefault(s => s.Contains(srch));
Um dies ohne Linq zu tun (z. B. für frühere .NET-Versionen wie .NET 2.0), können Sie die FindAll
-Methode von List<T>
verwenden, die in diesem Fall alle Elemente in der Liste zurückgeben würde, die den Suchbegriff enthalten:
var resultList = list.FindAll(delegate(string s) { return s.Contains(srch); });
Um alle Einträge zurückzugeben:
IEnumerable<string> result = list.Where(s => s.Contains(search));
Nur der erste:
string result = list.FirstOrDefault(s => s.Contains(search));
Was Sie geschrieben haben, verursacht den Kompilierungsfehler
Die beste überladene Methode für 'string.Substring (int)' hat einige ungültige Argumente
Unterzeichenfolge wird verwendet, um einen Teil der Zeichenfolge anhand der Zeichenposition und/oder der Länge der resultierenden Zeichenfolge abzurufen.
zum Beispiel srch.Substring(1, 3)
gibt den String "her" zurück
Wie bereits erwähnt, sollten Sie Contains
verwenden, die Ihnen mitteilt, wenn eine Zeichenfolge in einer anderen auftritt. Wenn Sie die tatsächliche Position wissen wollten, würden Sie IndexOf
verwenden.
ich benutze gerne indexOf oder enthält
someString.IndexOf("this");
someString.Contains("this");
Und für CaseSensitive
verwenden Sie:
YourObj yourobj = list.FirstOrDefault(obj => obj.SomeString.ToLower().Contains("some substring"));
OR
YourObj yourobj = list.FirstOrDefault(obj => obj.SomeString.ToUpper().Contains("some substring"));
das gleiche Problem musste ich machen.
Du brauchst das:
myList.Where(listStrinEntry => myString.IndexOf(listStringEntry) != -1)
Woher:
myList
ist List<String>
hat die Werte die myString
an einer beliebigen Position enthalten muss
Du suchst also de facto, ob myString einen der Einträge aus der Liste enthält. Hoffe das ist es was du wolltest ...