我在ASP.NET MVC中编写了一个应用程序,并实现了一个搜索栏。此搜索栏已启用多个字段。我遇到的问题是启用搜索int类型的ID字段。好像我需要在搜索字段中只有字符串值。有没有办法将ID字段转换为字符串类型,以便我也可以搜索它?
这是我正在使用的代码。它适用于名字和姓氏,但不适用于我启用ID部分。
感谢任何帮助!
public ActionResult Index(string sortOrder, string currentFilter, string searchString, int? page)
{
ViewBag.LastSortParm = sortOrder == "LastName" ? "LastDesc" : "LastName";
ViewBag.FirstSortParm = sortOrder == "FirstName" ? "FirstDesc" : "FirstName";
ViewBag.IDSortParm = sortOrder == "ID" ? "RVHDesc" : "ID";
if (!String.IsNullOrEmpty(searchString)) //creates the code for the search bar
{
doctors = doctors.Where(d => d.Last_Name.ToUpper().Contains(searchString.ToUpper()) //insert to upper or lower so that case is ignored
|| d.First_Name.ToUpper().Contains(searchString.ToUpper()));
|| d.RVH_ID_.ToUpper().Contains(searchString.ToUpper()));
}
}
答案 0 :(得分:1)
如果您的d.RVH_ID_
字段为int
,则需要在ToString()
来电之前致电ToUpper()
。试试这个:
doctors = doctors.Where(d => d.Last_Name.ToUpper().Contains(searchString.ToUpper())
|| d.First_Name.ToUpper().Contains(searchString.ToUpper())
|| d.RVH_ID_.ToString().ToUpper().Contains(searchString.ToUpper()));
正如@wgraham在上面的评论中提到的,由于int
没有大写/小写,因此ToUpper()
调用不是必需的。但是,Linq中ToString()
没有int
重载,因此您必须根据this answer将其强制转换为double
或decimal
。
示例:SqlFunctions.StringConvert((double)d.RVH_ID_).Contains(searchString)