C# 比较linq中的希腊语(或其他非拉丁语)字符串
我试图用linq编写一个查询,返回如下结果:C# 比较linq中的希腊语(或其他非拉丁语)字符串,c#,linq,entitymanager,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(f
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工作台中使用提供值的查询,一切正常,但在代码中查询不返回任何结果
编辑:我已使用MySQL连接器连接实体管理器。我之前没有考虑过,但这是一个问题,因为MsSQL连接一切正常
关于如何执行上述操作,您有什么想法吗?在区域敏感查询中,您不应该在不提供值的情况下使用
string.Equals()
,例如:
var people = pe.Person.Where(
per => per.FirstName.Equals(fname, StringComparison.CurrentCultureIgnoreCase));
是的,L2E支持此重载
如果仍然不起作用,则可能是AppDomain的当前区域性或DB的排序规则错误。查看SQL事件探查器中的查询/参数。这个
var people=(ObjectQuery)pe.Person.Where(per=>per.FirstName.Equals(fname)).ToList()怎么样代码>。工作正常吗?用=
代替等于
怎么样?它也不起作用?将列表强制转换为ObjectQuery会有什么帮助?这甚至是不允许的。我用一个diffirent对象尝试了相同的代码,它正常运行Eddik,当字母表是基于拉丁语的语言时,它运行良好,只是不是希腊语。你是这样执行代码的吗?不,这也不行。我的意思是它确实编译了,但它没有返回任何东西。我还检查了排序规则,它是用希腊语设置的。如果排序错误,它将无法在其他语言(如php)上运行(它确实如此),请阅读本文的其余部分。您需要查看实际的SQL,看看哪部分不正确。为LINQ指定区域性是正确的做法。至于你正在经历的其他问题的位置,我无法从你在帖子中所写的内容推断出它们。你的LINQ只是这个链条的一部分。