Jen*_*ter 4 c# linq string comparison entity-framework-4.1
我需要使用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();
Run Code Online (Sandbox Code Playgroud)
代码抛出一个异常:
LINQ ti实体不会重新确定方法'Int32 CompareOrdinal(System.String,System.String)'方法,并且此方法无法转换为存储表达式.
表中有很多数据,所以我真的需要这个where
子句.
有没有解决的办法?
更新
我不是想要确定两个字符串是否相等 - 区分大小写.
我正在努力确定一个字符串是否在一个范围内.所以问题是
显然,我不能用 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();
Run Code Online (Sandbox Code Playgroud)
这是生成的SQL:
SELECT
[Extent1].[Id] AS [Id]
FROM [dbo].[Table] AS [Extent1]
WHERE ([Extent1].[Id] >= 'a') AND ([Extent1].[Id] <= 'z')
Run Code Online (Sandbox Code Playgroud)