2012-04-13 5 views
0

Ich versuche Suchfunktion mit Action zu machen.MVC Wo Zustand mit Suchfunktion

wird die Action Parameter wie

@Html.ActionLink("Intel Core i5", "Search", "Store", new { @searchString = "i5" }, null) 

ich diesen Wert übergebe an der Steuerung geben, und es wird in der Steuerung arbeiten. Wenn ich jedoch versuche, den dezimalen Datentyp zu vergleichen, wird der Datentyp nicht angezeigt. Momentan ist der Prozessor varchar und ddisplaySize ist dezimal.

Ich weiß nicht, wie Displaygröße mit searchString- zu behandeln.

Mein Controller ist dies.

//Controller here 
public ActionResult Search(string searchString) 
    { 

     var product = from a in _db.Product.Include(a => a.Category) 
         select a; 
     if (!String.IsNullOrEmpty(searchString)) 
     { 
      //processor is working because searchString is string, however, 
      //displaySize is not working because of decimal value, and 
      // I don't know how to write Where condition in here. 
      product = product.Where(a => a.processor.ToUpper().Contains(searchString.ToUpper()) 
           || 
        //a.displaySize.ToString().Contains(searchString.ToUpper())); 
      //I repalce to below code, but it has error 
      //'Entity does not recognize the method ''System.String ToString()' method. 
        Convert.ToDecimal(a.displaySize).ToString().Contains(searchString) 

     } 
     return View(product.ToList()); 
    } 

Antwort

1

definitiv a.displaySize.ToString().Contains(searchString.ToUpper())); würde nicht die puprpose dienen. Versuchen Sie, den ganzzahligen Teil des Dezimalwerts mit der Suchzeichenfolge zu vergleichen, die genauere Ergebnisse liefert. wie diese Convert.ToInt32(a.displaySize).ToString().Contains(searchString)

+0

als Sie für die Beantwortung, aber ich habe eine Fehlermeldung anzeigt, ‚LINQ to Entities erkennt nicht die Methode‚System.String ToString()‘Methode‘. Wie kann ich Dezimal in String umwandeln, um mit SearchString zu vergleichen? – wholee1

+0

Wie hast du das in dem Beispiel gemacht, das du zur Verfügung gestellt hast? War das der Fehler, für den Sie die Frage tatsächlich gestellt haben? –

+0

Ja. nur habe ich die Codierung von meinem ersetzt, was ich vorher gepostet habe. Ich setze dasselbe wie 'Convert.ToInt32 (a.displaySize) .ToString(). Enthält (searchString)' in Where-Bedingung. – wholee1