c# – Linq函数,如.Net string.CompareOrdinal
作者:互联网
我需要在linq查询中使用string.CompareOrdinal(…)来比较字符串.
string max;
string min;
var res = db.Table
.Where(c => string.CompareOrdinal(c.Id, min) >= 0)
.Where(c => string.CompareOrdinal(c.Id, max) <= 0)
.ToList();
代码抛出一个异常:
LINQ ti Entities does not recongnize the method ‘Int32
CompareOrdinal(System.String, System.String)’ method, and this method
cannot be translated into a store expression.
表中有很多数据,所以我真的需要where子句.
有没有解决的办法?
更新
我不是想要确定两个字符串是否相等 – 区分大小写.
我正在努力确定一个字符串是否在一个范围内.
所以问题是
>有没有办法做到这一点 – 所以这适用于L2E?
显然,我不能使用string.CompareOrdinal
解决方法:
我的一位同事使用string.Compare
而不是string.CompareOrdinal
找到了解决方法
string min = "a";
string max = "z";
var res = db.Table
.Where(c => string.Compare(c.Id, min, StringComparison.OrdinalIgnoreCase) >= 0)
.Where(c => string.Compare(c.Id, max, StringComparison.OrdinalIgnoreCase) <= 0)
.ToList();
这是生成的SQL:
SELECT
[Extent1].[Id] AS [Id]
FROM [dbo].[Table] AS [Extent1]
WHERE ([Extent1].[Id] >= 'a') AND ([Extent1].[Id] <= 'z')
标签:c,linq,comparison,entity-framework-4-1,string 来源: https://codeday.me/bug/20190529/1178875.html