【问题标题】:linq query not working for database "ş", "ţ" characterslinq 查询不适用于数据库“ş”、“ţ”字符
【发布时间】:2014-03-13 21:42:15
【问题描述】:

searchString 来自用户输入,一个文本框。
当我输入“iasi”或“iaşi”之类的内容时,如果数据库中的值为“Iaşi”,它应该返回结果,但它不返回任何内容。
请注意,它适用于“ă”、“â”等数据库字符。
数据库和列具有“Latin1_General_CI_AI”排序规则,列类型为 nvarchar。
HTML Meta Content-Type 标记为“text/html; charset=UTF-8”。

查看:

  @using (Html.BeginForm())
        {
            <p>
                @Html.TextBox("SearchString")
                <input type="submit" value="Search" />
            </p>
        }

控制器:

  public ActionResult Index(string searchString)
    {
        var db = new dbEntities();
        var query = from i in db.Table1
                           select i;

        if (!String.IsNullOrEmpty(searchString))
        {
            query = query.Where(s => s.Column1.Contains(searchString)
                                   || s.Column2.Contains(searchString));

        return View(query);
    }

【问题讨论】:

  • 出于调试目的,调用 query.ToList 并查看内容。这样您就可以看到查询中的字符串,并且可以将它们与您的 searchString 进行比较

标签: c# sql-server linq asp.net-mvc-4 linq-to-sql


【解决方案1】:

排除明显的情况...有没有可能是因为您的两个搜索字符串以字母“i”开头,而您的数据库内容字符串以字母“l”开头?

【讨论】:

  • 在我的示例中,搜索字符串以“i”(小写)开头,而数据库内容字符串以“I”大写开头,这有效,但这不是问题所在。问题是搜索带有“ş”、“ţ”等的字符串,没有返回任何结果!
猜你喜欢
  • 2011-07-06
  • 2012-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多