我需要使用比较字符串string.CompareOrdinal(...)
在 linq 查询中。
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 实体无法识别“Int32 CompareOrdinal(System.String, System.String)”方法,并且该方法无法转换为存储表达式。
表中有很多数据,所以我真的需要where
clause.
有没有解决的办法?
Update
I'm not尝试确定两个字符串是否相等 - 区分大小写。
我正在尝试确定字符串是否在 a 内range。
所以问题是
显然,我不能使用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')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)