Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 类似.Net string.CompareOrdinal的Linq函数_C#_String_Linq_Entity Framework 4.1_Comparison - Fatal编程技术网

C# 类似.Net string.CompareOrdinal的Linq函数

C# 类似.Net string.CompareOrdinal的Linq函数,c#,string,linq,entity-framework-4.1,comparison,C#,String,Linq,Entity Framework 4.1,Comparison,我需要在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查询中使用
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();
字符串最大值;
字符串最小值;
var res=db.Table
.Where(c=>string.CompareOrdinal(c.Id,min)>=0)

.Where(c=>string.CompareOrdinal(c.Id,max)如果Id是字符串,则此解决方案有效,因此看起来Id是int。int无法与字符串进行比较。请将Id更改为字符串或将min/max更改为int以使其有效(并在int值之间使用简单的<和>)


顺便说一句:在1 where函数中检查最小值和最大值可以节省1次迭代。

我的一位同事找到了一个解决方法,使用而不是

string min=“a”;
字符串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)='a')和([Extent1].[Id]您是否尝试过类似的方法..我的意思是..这可能会有帮助我认为代码应该给出一个编译错误“方法'CompareOrdinal'不重载1个参数”我已经更新了quistionFYI,这里有一个链接,指定了所有不兼容的字符串方法,谢谢你的回答。如果我使用Linq To Objects(L2O)上面的语句可以工作。但是在L2E中,提供程序无法将该语句转换为任何SQL。L2E使用不同的加载方式。当查询访问数据库时,两个
Where
子句已经组合在一起。
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();
SELECT 
[Extent1].[Id] AS [Id]
FROM [dbo].[Table] AS [Extent1]
WHERE ([Extent1].[Id] >= 'a') AND ([Extent1].[Id] <= 'z')