MVC LINQ mit Where-Bedingung
Ich versuche, die Suche-Funktion in mein Projekt.
Derzeit, ich möchte konvertieren von decimal-Wert zu string für den Vergleich mit searchString.
Wenn ich wie diese:
public ActionResult Search(string searchString)
{
var product = from a in _db.Product.Include(a => a.Category)
select a;
if (!String.IsNullOrEmpty(searchString))
{
product = product.Where(a => a.model.ToUpper().Contains(searchString.ToUpper())
|| Convert.ToInt32(a.displaySize).ToString().Contains(searchString));
}
return View(product.ToList());
}
Es hat Fehler,
'LINQ to Entities nicht erkennt die Methode 'System.String
ToString ()' - Methode'.
Wie kann ich vergleichen decimal-Wert mit dem string-Wert?
Könnten Sie mir helfen?
Dank.
- Doppelte Frage? stackoverflow.com/questions/10140634/...
- Ich habe dieses problem gelöst, durch 'SqlFunctions.StringConvert(ein.displaySize).Enthält(searchString)'.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht verwenden C# - Funktionen, die nicht konvertiert werden kann, um SQL wie
.ToString()
. Sie können LINQ to Objects statt, wenn Sie Ihre Tabelle ist nicht sehr groß, durch den Aufruf.ToList()
vorWhere
EDIT:
Können Sie die Funktionen aus
SqlFunctions
namespace. die Funktionen können leicht umgewandelt werden, um SQL.Könnten Sie versuchen, konvertieren Sie Ihre string-Wert (query-parameter) in eine Dezimalzahl und Vergleich der reverse.
Sieht es aus wie Sie auf der Suche sind zwei verschiedene Dinge. Ich würde aufgeteilt linq-Anweisung in der ||. Wenn Sie auf der Suche für was auch immer ein.Modell ist, gehen Sie auf eine Methode, wenn Sie auf der Suche für den int-Wert zum anderen zu gehen, und konvertieren Sie den such-string ein int VOR dem linq-Anweisung. Diese Methode würde gerne so etwas wie:
Sie müssen dies tun, weil SQL nicht über eine ToString () - Methode... also LINQ nicht wirklich wissen, was zu tun. Denken Sie daran, dass dies alles wird umgewandelt, um SQL.