it-swarm.com.de

Unterstrings in einer Liste von Strings suchen

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;
}
17
user1380621

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); });
24
BrokenGlass

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));
10
abatishchev

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.

1
Conrad Frix

ich benutze gerne indexOf oder enthält

someString.IndexOf("this");
someString.Contains("this");
0
unarity

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"));
0
Diego Venâncio

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 ...

0
a joka