LINQ to Entities does not recognize the method 'Int32 ToInt32(System.String)' method, and this method cannot be translated into a store expression

LINQ to Entities does not recognize the method 'Int32 ToInt32(System.String)' method, and this method cannot be translated into a store expression

First of all look at the screenshot of the error page


You cannot use Convert.ToInt32 inside your LINQ query. Linq has its own syntax and does not recognize external methods.

You have to extract the variable you are looking for to C#, convert it, and use it as a variable in another query.

The original code which was causing error is:

if (!string.IsNullOrWhiteSpace(customerID))
{
    payments = payments.Where(i => i.Invoice.CustomerID == Convert.ToInt32(customerID));
}

In above you can see customerID is string within if statement. This customerID is beging used inside LINQ query by converting ToInt32 inside LINQ query which is not permitted.

Now to fix this, all you need is convert ToInt32 outside LINQ query as give below

if (!string.IsNullOrWhiteSpace(customerID))
{
    int CustomerID = Convert.ToInt32(customerID);
    payments = payments.Where(i => i.Invoice.CustomerID == CustomerID);
}

Now LINQ query will not raise any complain.

Hope this helps.

Comments

Post a Comment

Popular posts from this blog

Migrating database from ASP.NET Identity to ASP.NET Core Identity

Customize User's Profile in ASP.NET Identity System