Wie man strings Vergleichen in Linq-Abfrage
CompareTo ist nicht hier arbeiten für mich.
Meine linq-Abfrage ist
var result = from c in customers
where c.CustomerID.CompareTo(txtSerchId.Text) >= 0
select` c;
- und em immer eine Ausnahme
//////AUSNAHME///////////
System.ArgumentException was caught
Message=Value does not fall within the expected range.
Mein code ist so etwas wie das
var result =
from c in customers
where c.CustomerID.CompareTo(txtSerchId.Text) >= 0
select c;
if (result != null)
{
IEnumerator<Customer> resultEnum = result.GetEnumerator();
while (resultEnum.MoveNext())
{
Customer c = (Customer)resultEnum.Current;
addToDataSet(Guid.NewGuid().ToString(), c);
}
ShowResult();
}
else
{
MessageBox.Show("No Customer found within criteria");
}
Ausnahme ist in dieser Zeile
IEnumerator<Customer> resultEnum = result.GetEnumerator();
was ist der Wert, der in
txtSerchId ist TextFeild(WindowForm Contorl) ich bin Vergleich der vom Benutzer eingegebenen Wert auf die Sammlung von Objekten, die ich habe, die Suche der Kunden mit den IDs von weniger als oder können Sie sagen, größer als die vom Benutzer eingegeben werden.
und es ist
yess! es ist der text, auch wenn some1 geben einige numerische in textfeild, Textfeild die Text-Eigenschaft zu manipulieren, dass als text.
txtSerchId.Text
und was ist die erwartete Ausgabe? Sie vergleichen CustomerID
auf einen beliebigen string????txtSerchId ist TextFeild(WindowForm Contorl) ich bin Vergleich der vom Benutzer eingegebenen Wert auf die Sammlung von Objekten, die ich habe, die Suche der Kunden mit den IDs von weniger als oder können Sie sagen, größer als die vom Benutzer eingegeben werden.
und es ist
Text
ist? Und welchen Sinn hat es, zu vergleichen, dieser text ist ein CustomerID
? Vielleicht bin ich einfach nicht verstehen, Ihre geschäftlichen Anforderungen.if (result != null)
ist nie null
. Sollten Sie verwenden result.Any()
um zu überprüfen, ob die Sequenz enthält keine Elemente.yess! es ist der text, auch wenn some1 geben einige numerische in textfeild, Textfeild die Text-Eigenschaft zu manipulieren, dass als text.
InformationsquelleAutor MBasit | 2012-05-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
versuchen Sie dies :
ätsch! ich war gerade zu erwähnen, dass wenn ich Equals-Methode(das ist nicht Voraussetzung, nur für die Prüfung), das funktioniert Super, und das ist mehr frustrierend für mich........
InformationsquelleAutor Ovais Khatri
Zitat aus deinem Kommentar "ich bin Vergleich der vom Benutzer eingegebenen Wert auf die Sammlung von Objekten, die ich habe, die Suche der Kunden mit den IDs von weniger als oder können Sie sagen, größer als die vom Benutzer eingegeben."
versuchen Sie, diese für "größer als":
Aktualisieren, sobald weitere Informationen Hinzugefügt worden ist, in den Kommentaren:
Versuchen Sie dies:
Beachten Sie, dass dies ist wesentlich ineffizienter als es zunächst zieht ALLE Datensätze aus der Datenbank ab und filtert Sie nach Ihren string-Vergleich. Aber um ehrlich zu sein, ich weiß nicht, einen besseren Weg, so könnte dies einen Versuch Wert sein.
Interessant, dann müssen Sie entscheiden, ob eine bestimmte CustomerID ist größer als die andere?
Genau! mehr auf der Grundlage der alphabetischen Ordnung, das ist, was CompareTo-Methode nicht einfach, Aber es funktioniert nicht in LINQ-contest weiß nicht Y??? CompareTo-Methode der string-Klasse nimmt einen string-argument und vergleichen es mit "diesem" (aufrufende) Objekt zurückgibt, wie folgt: 0 wenn Sie gleich sind, -1, wenn argument größer ist als e..g ("c".CompareTo("d")) 1 wenn argument kleiner e..g ("c".CompareTo("a"))
wahrscheinlich, weil es keine übersetzung für "Compare", um SQL, so dass die IQueryable nicht in den Griff. Könnten Sie ziehen das ganze set in eine List<T> und verwenden Sie dann Vergleichen, um die Datensätze, die Sie benötigen. Dies ist nicht eine sehr effiziente Art und Weise und dazu bewegen könnten, einen Leistungseinbruch, als es braucht, ziehen jeden Eintrag, aber einen Versuch ist es Wert:
customers.ToList().Where(c.CustomerID.CompareTo(txtSerchId.Text) >= 0);
Verwendung von LINQ ist obligatorisch in meinem Szenario, wie kann ich die Integration dieser Lösung in lINQ
InformationsquelleAutor Bazzz
Gehen einfach:
Für Die Gleichstellung:
var result = from c in customers
where c.CustomerID ==Convert.ToInt32(txtSerchId.Text)
select c;
Für Mehr :
where c.CustomerID >= Convert.ToInt32(txtSerchId.Text)
Weniger :
where c.CustomerID <= Convert.ToInt32(txtSerchId.Text)
InformationsquelleAutor
*Dies war FÜR MICH
InformationsquelleAutor Praveen Kumar Rejeti