【问题标题】:Entity Framework contains clause doesn't find实体框架包含子句未找到
【发布时间】:2013-01-11 19:13:11
【问题描述】:

我使用 contains 子句在 db 表中进行搜索。但是如果数据有大写字母并且我用小写字母搜索,它就找不到我搜索的内容。但是当我用大写字母搜索时它可以找到。小写搜索也是如此。

这是我的代码:

 using (var context = new eTicaretEntity())
  {
    return context.GetActiveProducts().Where(p => p.Name.Contains(name)).ToList();
  }

你可以看到我的意思是这些照片。

大写字母可以找到。

找不到小写字母的数据。

【问题讨论】:

标签: asp.net entity-framework c#-4.0 contains


【解决方案1】:

如果您的数据库排序规则区分大小写,那么您必须将比较的两边都转换为大写(或小写)。

using (var context = new eTicaretEntity())
{
    return context.GetActiveProducts()
                  .Where(p => p.Name.ToUpper().Contains(name.ToUpper()))
                  .ToList();
}

【讨论】:

  • 感谢您的简单解决方案:)
【解决方案2】:

试试这个:

return context.GetActiveProducts().Where(p => 
          p.Name.IndexOf(name,StringComparison.OrdinalIgnoreCase) >= 0).ToList();

这将解决您的问题。

【讨论】:

  • 这会转化为 SQL 吗?我认为 IndexOf 在 EF 中没有 SQL 翻译。
  • 是的,它会转换成 sql
  • 不知道。这是 EF 5 中的新功能吗?你有参考吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-01
  • 2011-06-22
  • 2011-12-31
  • 2010-12-12
相关资源
最近更新 更多