我有這樣的搜索詞搜索十進制值
[HttpPost]
public ActionResult Index(string searchString)
{
if (!String.IsNullOrEmpty(searchString))
{
students = students.Where(s => s.FIRST_NAME.Contains(searchString)
|| s.LAST_NAME.Contains(searchString)
|| s.PERSONAL_NUMBER.Contains(searchString)
|| s.ACD_UNI_DEGREES.DEGREE.Contains(searchString)
|| s.ACD_UNI_FACULTIES.FACULTY.Contains(searchString)
|| s.ACD_UNI_SPECIALIZATIONS.SPECIALIZATION.Contains(searchString)
|| SqlFunctions.StringConvert(s.SEMESTER).Contains(searchString)
|| s.COR_PAYER_STATUS.NAME.Contains(searchString)
|| SqlFunctions.StringConvert(s.CREDIT_COUNT).Contains(searchString));
}
return View(students.ToList());
}
但調試它拋出一個異常:
System.NotSupportedException:指定的方法「System.String StringConvert(系統.Nullable`1 [System.Decimal])'類型 'System.Data.Objects.SqlClient.SqlFunctions'不能被轉換爲LINQ to Entities存儲表達式的 。
的問題是在這裏:
SqlFunctions.StringConvert(s.SEMESTER).Contains(searchString)
學期是十進制和搜索字符串是字符串。 我該如何改進?
做一個存儲過程,將十進制列轉換爲一個字符串,並在服務器上執行'like'比較。通過SqlClient調用存儲過程 – Ewan
既然它可以爲空,你可以先檢查's.SEMESTER!= null && s.SESES.HasValue'然後'sEMESTER.Value.ToString()。Contains(searchString)' – Icepickle
什麼樣的數據庫你有嗎? – Default