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



我正在尝试在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 连接一切正常

关于如何执行上述操作的任何想法?

在区分

区域的查询中,不应在没有提供 StringCompare 值的情况下使用 string.Equals(),例如:

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

是的,L2E 支持此重载。

如果这仍然不起作用,则可能是 AppDomain 的当前区域性或数据库的排序规则是错误的。查看 SQL 事件探查器中的查询/参数。

最新更新