2012-12-08 40 views
0

下面是该查询字符串转换为在LINQ查询诠释

db.setupBrands.Where(x => 
    Convert.ToInt32(x.SortKey) <= id && 
    Convert.ToInt32(x.SortKey) >= desID) 
.Select(x => x); 

这里SORTKEY是字符串类型我想转换为int。在Convert.ToInt32()我得到以下错误。

LINQ to Entities无法识别方法'Int32 ToInt32(System.String)'方法,并且此方法无法转换为存储表达式。

+1

出于兴趣,如果你的'SortKey'属性始终是一个整数,你为什么把它作为一个字符串你架构? –

+0

SortKey是字符串类型... @Jon Skeet –

+1

是的,我可以说。我的观点是*为什么*?如果它总是有一个数字值,为什么不在模式中使它成为一个整数? –

回答

2

EF无法转换Convert和Parse。我完全同意上述,但是,如果你的SORTKEY是​​你可以试试这个:

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);