[英]EFCore 3: How to compare string columns on server side
我想有效地从此查询中获取结果。
// 获取所有名字以 F 或更高字母开头的人
Select * 来自 MyTable where PersonName >'F'
当我使用 Entity Framework Core 3.0 运行此代码时,
context.MyTable
.Where(t=> String.Compare(t.PersonName ,"F")>0);
我有错误,
无法翻译查询。 以可翻译的形式重写查询,或通过插入对 AsEnumerable()、AsAsyncEnumerable()、ToList() 或 ToListAsync() 的调用显式切换到客户端评估
我目前的工作是使用 FromSQL 方法并编写我自己的 sql。 有没有什么方法可以使用 LINQ 语法来实现相同的目标?
来自微软的文档Where
此方法表示的查询在 object 通过直接调用其 GetEnumerator 方法枚举之前不会执行
您应该在 Where for 强制立即查询评估之后调用方法 ToList() 或 ToListAsync()
在您的代码中
context.MyTable
.TakeWhile(t => t.PersonName.First() > 'F')
.ToList();
最佳解决方案
获取所有姓名以 F 或更高字母开头的人
context.MyTable
.OrderBy(t => t.PersonName)
.SkipWhile(t => t.PersonName.First() < 'F')
.ToList();
注意大小写
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.