实体框架linq查询查找带有土耳其字符的记录

时间:2017-12-17 19:33:42

标签: c# sql-server asp.net-mvc entity-framework linq

我需要找到包含特殊土耳其字符的客户名称。例如,Customer表是:

Id  Name     Surname
--------------------
1   Şağbüz   Akarca
2   Üleykö   Pancar

我想找到带有此linq查询的Id 1的记录:

context.Customers.Select(c => c.Name.Contains('Sagbuz'));

另一个例子:

context.Customers.Select(c => c.Name.Contains('Uleyko'));

此查询转换为:

SELECT * FROM Customer WHERE Name LIKE N'Sagbuz'

返回没有找到行。我找不到实现这个目标的方法。

2 个答案:

答案 0 :(得分:1)

与Linq to Entities无关。您的数据库可能配置为AS(Accent Sensitive)。所以,尝试执行以下查询;

SELECT * FROM Customer WHERE Name LIKE N'Sagbuz' COLLATE Latin1_General_CI_AI

将为Şağbüz返回结果。

另外,请注意,尝试更改sql server的排序规则可能会影响整个表和记录。

答案 1 :(得分:0)

您应该使用“ where”而不是“ select”:

context.Customers.Where(c => c.Name.Contains('Sagbuz'));