在linq查询中将字符串转换为int

在linq查询中将字符串转换为int,linq,linq-to-entities,Linq,Linq To Entities,这是一个问题 db.setupBrands.Where(x => Convert.ToInt32(x.SortKey) <= id && Convert.ToInt32(x.SortKey) >= desID) .Select(x => x); db.setupBrands.Where(x=> 转换为32(x.SortKey)=desID) .选择(x=>x); 这里SortKey是我想转换为int的字符串类型。在convert.T

这是一个问题

db.setupBrands.Where(x => 
    Convert.ToInt32(x.SortKey) <= id && 
    Convert.ToInt32(x.SortKey) >= desID)
.Select(x => x);
db.setupBrands.Where(x=>
转换为32(x.SortKey)=desID)
.选择(x=>x);
这里SortKey是我想转换为int的字符串类型。在convert.ToInt32()上,我得到了以下错误

LINQ to Entities无法识别方法“Int32到Int32(System.String)”方法,并且无法将此方法转换为存储表达式


EF无法转换和分析。我完全同意上述观点,但是,如果您的排序键是
nchar(4)
,您可以尝试以下方法:

string s_id = string.Format("{0:0000}", id);
string s_desID = string.Format("{0:0000}", desID );

db.setupBrands.Where(x => 
    x.SortKey <= s_id && 
    x.SortKey >= s_desID)
.Select(x => x);
strings_id=string.Format(“{0:0000}”,id);
string s_desID=string.Format(“{0:0000}”,desID);
db.setupBrands.Where(x=>
x、 SortKey=s_desID)
.选择(x=>x);

出于兴趣,如果您的
SortKey
属性始终是整数,为什么在架构中将其作为字符串?SortKey是字符串类型@乔恩·斯凯蒂,我看得出来。我的意思是为什么?如果它总是有一个数值,为什么不在您的模式中将其设置为整数呢?因为我想以0001形式显示它,如果我保持它为int,我会将它存储为1。@Zeb ur Rehman您可以设置显示
String.format(“{0:0000}”,value)的整数值格式。