2016-07-27 11 views
0

ich verwirrt bin über Wie kann ich einen bestimmten Text in einer A-Liste finden mit Lambda-Ausdrücke Zum Beispiel habe ich eine ListeC# Lambda Expression Liste der Strings

List<string> MyList = new List<string> {"TEXT","NOTEXT","test","notest"}; 

wie Sie die Liste sehen kann, ist unfiltriertes von „ToUpper“ und „ToLower“ Eigenschaften ich möchte zum Beispiel auf ToLower elemtes in dieser Liste shearch Lambda Expression mit

var SList = MyList.FindAll(item => item.ToLower); 
foreach(var s in SList) 
    { 
     Console.WriteLine(s); 
    } 

Antwort

2

einfach überprüfen, ob der Klein Wert übereinstimmt, gegen den Strom Wert, gleich für obere

var lower = MyList.Where(a=>a == a.ToLowerInvariant()); 
var upper = MyList.Where(a=>a == a.ToUpperInvariant()); 

Wenn Sie die kulturspezifische Version verwenden möchten, die kulturspezifischen Methoden

var lower = MyList.Where(a=>a == a.ToLower()); 
var upper = MyList.Where(a=>a == a.ToUpper()); 
+0

Danke Sir! –

+0

@bakapanda Kein Problem, bitte als Antwort markieren, wenn dadurch das Problem behoben wurde – konkked

0

ToLower ist keine Eigenschaft, sondern eine Methode dann nur um zu überprüfen, und es funktioniert nicht Machen Sie einen Test (dh es gibt keine bool zurück), sondern gibt eine konvertierte Zeichenkette zurück.

Dies bedeutet, dass, da es eine Methode ist, müssen Sie hinter Klammern (.ToLower()) platzieren.

Um einen Test zu machen, müssen Sie das Ergebnis mit etwas vergleichen. In diesem Fall mit der ursprünglichen Zeichenfolge, um zu sehen, ob sie gleich der Kleinbuchstabenfolge ist.

var SList = MyList.FindAll(item => item == item.ToLower()); 

Die genaue Bearbeitung von ToLower hängt von der aktuellen UI-Kultur. Einige Sprachen haben spezielle Regeln für die Konvertierung in Groß- oder Kleinschreibung. Wenn Sie ein kulturunabhängiges Verhalten bevorzugen, verwenden Sie stattdessen ToLowerInvariant oder ToUpperInvariant.

Verwandte Themen