比较linq中的希腊语(或其他非拉丁语)字符串

时间:2012-12-07 12:47:22

标签: c# linq entitymanager

我正在尝试在linq中编写一个返回如下结果的查询:

PeopleEntities pe = new PeopleEntities();
String fName = "Τάκης";
var people = pe.Person.Where(per => per.FirstName.Equals(fname)).ToList();

使用

转储查询时
String query = ((ObjectQuery)pe.Person.Where(per => per.FirstName.Equals(fname))).ToTraceString();
Console.WriteLine(query);

然后在提供值的MySQL WorkBench中使用查询,一切正常,但在代码中查询不返回任何内容。

编辑:我使用MySQL连接器连接了实体管理器。我之前没想过,但这是问题,因为MsSQL连接一切正常

关于如何执行上述内容的任何想法?

1 个答案:

答案 0 :(得分:0)

在区域敏感的查询中,如果不提供StringComparison值,则不应使用string.Equals(),例如:

var people = pe.Person.Where(
    per => per.FirstName.Equals(fname, StringComparison.CurrentCultureIgnoreCase));

是的,L2E支持此重载。

如果仍然无效,AppDomain的当前文化或数据库的排序规则可能是错误的。查看SQL事件探查器中的查询/参数。