I have following code in my page:
var myVar= Entity.SetName .Where(p => int.Parse(p.ID) >= start && int.Parse(p.ID) <= end);
start and end are int, but p.ID is string. So i should convert p.ID to int. But i get following error:
LINQ to Entities does not recognize the method 'Int32 Parse(System.String)' method, and this method cannot be translated into a store expression.
Where is the problem??
First, I would highly recommend to check your database design, whether there is a really good reason for
ID to be a
string. I would consider changing the
ID DB type to
int and you will get rid of this problem with converting.
The error you get means, that EF does not know how to convert the method
Int32.Parse() to SQL.
Basically you have two options how to deal with that:
Do the comparison outside the linq to entities:
var myVar= Entity.SetName.AsEnumerable() .Where(p => int.Parse(p.ID) >= start && int.Parse(p.ID) <= end);
But this is not recommended, because you are reading whole result set from DB, before applying the
Or make custom model defined function as described in this post on SO:
move the parse function out of linq expression.
int id = int.Parse(p.ID); var myVar= Entity.SetName .Where(p => id >= start && int.Parse(p.ID) <= end);