2012-03-28 6 views
8

Ich habe ein wenig Mühe beim Ermitteln der genauen Syntax für die Verwendung von string.compare in der Where-Klausel einer linq-Abfrage. Unten ist was ich bisher habe.Verwenden von string.compare in einer linq-Abfrage where-Klausel

filteredApplications = AllApplications.Where(x => x.Name.Contains(string.Compare(x.Name, txtSearch.Text, StringComparison.OrdinalIgnoreCase))).ToList(); 

Ist das überhaupt möglich oder belle ich den falschen Baum?

Rhonda

+0

'String.Compare()' gibt ein int zurück. – jrummell

+0

Was versuchst du zu tun? Sie benutzen 'Contains' und' Compare' ... – jrummell

Antwort

11

Wenn Sie sehen wollen, zu überprüfen, ob Name den Suchtext enthält:

AllApplications.Where(x => x.Name.ToUpperInvariant().Contains(txtSearch.Text.ToUpperInvariant()))).ToList(); 

Wenn Sie möchten, auf Gleichheit überprüfen:

AllApplications.Where(x => string.Equals(x.Name, txtSearch.Text, StringComparison.OrdinalIgnoreCase)).ToList(); 

In Ihrer ursprünglichen Abfrage haben Sie überprüft, ob x.Name das Ergebnis string.Compare enthält. Ich nehme an, Sie haben das nicht versucht, seit string.Compare returns an integer. string.Compare wird hauptsächlich zur Bestimmung der Sortierreihenfolge verwendet.

0

Ich glaube, Sie suchen Equals wenn Sie schauen, um Gleichheit zu entsprechen:

filteredApplications = AllApplications.Where(x => x.Name.Equals(txtSearch.Text, StringComparison.OrdinalIgnoreCase)).ToList(); 
Verwandte Themen