2012-04-13 56 views
0

私はactionLinkで検索機能を作成しようとしています。MVC検索条件付きの条件

ActionLinkのは、私は、この値を渡し、それがコントローラに動作しているよう

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

としてコントローラにパラメータを与えます。しかし、私は文字列のデータ型ではなく、10進データ型を比較しようとしています。現在、processorはvarcharで、dissplaySizeは10進数です。

searchStringを使ってdisplaySizeを処理する方法がわかりません。

私のコントローラはこれです。

//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()); 
    } 

答えて

1

間違いなくa.displaySize.ToString().Contains(searchString.ToUpper()));は、puprposeを提供しません。小数点の整数部分とより正確な結果を与える検索文字列を比較してみてください。このようにConvert.ToInt32(a.displaySize).ToString().Contains(searchString)

+0

私はエラーが発生しましたが、 'LINQ to Entitiesはメソッドを認識しません' System.String ToString() 'メソッド'。 searchStringと比較するために10進数を文字列に変換するにはどうすればよいですか? – wholee1

+0

あなたが提供した例でこれをどうやってやっていたのですか?これは実際に質問を投稿したエラーですか? –

+0

はい。ちょうど私が前に投稿したものから私のコードを置き換えました。 Where '条件でこの' Convert.ToInt32(a.displaySize).ToString()。Contains(searchString) 'と同じものを置きます。 – wholee1