将int转换为字符串以用于搜索栏函数C#

时间:2015-04-02 16:50:00

标签: c# asp.net-mvc

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

1 个答案:

答案 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将其强制转换为doubledecimal

示例:SqlFunctions.StringConvert((double)d.RVH_ID_).Contains(searchString)