【发布时间】:2020-05-04 20:13:17
【问题描述】:
我有以下课程:
public class Employee
{
public string Name {get; set;}
...
}
以及 EF Core 2.1 中的 LINQ 查询
Employee GetEmployeeByName(string name) {
return Context.Employee.Where ( w =>String.Compare(w.Name, name, true) == 0).FirstOrDefault();
}
转成Net Core EF 3.1后出现错误。
无法翻译 LINQ 表达式。以可翻译的形式重写查询,或通过插入对
AsEnumerable()、AsAsyncEnumerable()、ToList()或ToListAsync()的调用显式切换到客户端评估
我必须将查询更改为
Employee GetEmployeeByName(string name) {
return Context.Employee.Where ( w =>w.Name.ToLower() == name.ToLower()).FirstOrDefault();
}
有没有更好的方法来做到这一点?
【问题讨论】:
-
你用的是什么数据库?
-
Microsoft SQL Server。
-
我正朝着 barett-string ops 的答案前进,如果它们是在客户端 c# 上完成的,它们只会发送案例。对于传递给数据库的简单查询,例如
.Where(x => x.Name == "Smith"),case sens 来自 db,默认情况下 SQLS 通常不是 case sens
标签: c# linq entity-framework-core ef-core-3.1