ListView Ausgewählte Zeile mit string vergleichen c#?

2 Antworten

Das sollte so funktionieren (ich habe es nun nicht explizit getestet):

foreach (ListViewItem listItem in YourListView.Items)
{
  var rowData = string.Concat(listItem.SubItems.Select(item => item.Text));

  if (rowData.Contains("Template"))
  {
    // do something ...
  }
}

Mittels Linq werden hier alle Texte der Subitems ausgewählt und dann konkateniert.

Ebenso könntest du auch wirklich durch jedes Subitem laufen:

foreach (ListViewItem listItem in YourListView.Items)
{
  if (listItem.SubItems.Any(item => item.Text.Contains("Template"))
  {
    // do something ...
  }
}

Oder wenn du nur bei einer bestimmten Spalte schauen möchtest:

var columnToCheck = 1; // or any other ...

foreach (ListViewItem listItem in YourListView.Items)
{
  if (listItem.SubItems[columnToCheck].Text.Contains("Template"))
  {
    // do something ...
  }
}

Wenn du case insensitive prüfen möchtest, verwende IndexOf.

Du gehst Zeile für Zeile durch die Elemente in der ListView (am besten mit einer foreach-Schleife). Bei jedem Element prüfst du, ob der gesuchte String darin enthalten ist, indem du die String.Contains()-Methode aufrufst. Hier ein kleines Beispiel, wie das funktioniert (nicht für mit einer ListView):

string str1 = "Hello World!";
string str2 = "ello";

Console.WriteLine(str1.Contains(str2));
Console.WriteLine(str1.Contains("war"));
Console.WriteLine(str1.Contains("H"));
Console.WriteLine(str1.Contains("world"));

/* Ausgabe:
 * true
 * false
 * true
 * false
*/

Bitte beachte, dass Contains() case-sensitive ist, als Groß- und Kleinschreibung beachtet wird. Um ganz sicher zu gehen, empfehle ich dir, beide Strings vorher mit String.ToLower() in Kleinbuchstaben umzuwandeln.

Siehe auch in der Dokumentation: String.Contains(String)

Woher ich das weiß:Studium / Ausbildung