【发布时间】:2021-12-03 00:06:48
【问题描述】:
var foundName = await (the Context)
.Search<MyEntity>(x => x.Name.Equals(data.Name, StringComparison.OrdinalIgnoreCase))
.AsNoTracking()
.FirstOrDefaultAsync();
我收到了这个错误:
无法翻译 LINQ 表达式“DbSet() .Where(s => s.Name.Equals(value: __data_Name_0, comparisonType: OrdinalIgnoreCase))”。附加信息:不支持使用“StringComparison”参数转换“string.Equals”重载。请参阅https://go.microsoft.com/fwlink/?linkid=2129535 了解更多信息。以可翻译的形式重写查询,或通过插入对“AsEnumerable”、“AsAsyncEnumerable”、“ToList”或“ToListAsync”的调用显式切换到客户端评估。请参阅https://go.microsoft.com/fwlink/?linkid=2101038 了解更多信息。
如何实现这个查询?
【问题讨论】:
-
自从我使用 EnitiyFramework 以来已经有一段时间了,但通常你不能在 sql 数据库中使用编程函数,因为将 c# 代码转换为 sql 函数需要花费太多精力,所以你需要使用以下函数已经存在于sql中。所以对于不区分大小写的 equals 将两个字符串转换为大写或小写,然后与 == 进行比较
标签: c# dbcontext string-comparison ignore-case