2012-04-13 3 views
0

Я пытаюсь выполнить функцию поиска с действиемLink.MVC Где условие с функцией поиска

ActionLink передаст параметр на контроллер, такой как

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

я передать это значение, и он работает в контроллере. Однако, когда я пытаюсь сравнить десятичный тип данных, а не строковый тип данных. В настоящее время процессор - varchar, а discplaySize - десятичный.

Я не знаю, как обращаться с displaySize с помощью searchString.

Мой контроллер - это.

//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())); Wouldnt служить puprpose. попробуйте сравнить целую часть десятичного значения со строкой поиска, которая даст более точные результаты. как это Convert.ToInt32(a.displaySize).ToString().Contains(searchString)

+0

Чем вы отвечаете, но у меня есть ошибка: «LINQ to Entities не распознает метод« System.String ToString() «method». Как преобразовать десятичную строку в строку для сравнения с searchString? – wholee1

+0

Итак, как вы это делали в примере, который вы предоставили? была ли это ошибкой, для которой u фактически отправил вопрос? –

+0

Да. просто я заменил код, который я написал ранее. Я поставил то же самое, что и «Convert.ToInt32 (a.displaySize) .ToString(). Содержит (searchString) в условии Where. – wholee1

Смежные вопросы