编程语言
首页 > 编程语言> > c# – Linq函数,如.Net string.CompareOrdinal

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