Nick LaMarca
Nick LaMarca

Reputation: 8188

Convert.Int64 Is Not Reconized LINQ To Entities

I am getting the following exception: LINQ to Entities does not recognize the method 'Int64 ToInt64(System.String)' method, and this method cannot be translated into a store expression.

I had long.Parse(ProjectID.ToString()) and I see the suggestion was to use Convert.ToInt64 but I am still getting the same exception

string projID = ProjectFileID.ToString();

            var d = (from f in context.FileInfo
                     where f.ID == Convert.ToInt64(projID)
                     select (f));

Upvotes: 3

Views: 10731

Answers (2)

Isaac Levin
Isaac Levin

Reputation: 2899

The reason is that it tries to do the conversion inside the query itself and the behind the scenes SQL has no definition for that Extension. The workaround is doing the conversion to long outside of the query (to a temp variable) and passing that in to the LINQ.

Upvotes: 0

dlev
dlev

Reputation: 48596

Just do the conversion outside the query, so you compare the results directly to a variable of type long:

// TODO: Error handling
long projID = Convert.ToInt64(ProjectFileID.ToString());

var d = (from f in context.FileInfo
         where f.ID == projID
         select (f));

Also, given that you're calling ToString() on ProjectFileID, can you maybe just cast it instead, since it certainly seems like it's an int or something along those lines.

Upvotes: 13

Related Questions