Sagar Upadhyay
Sagar Upadhyay

Reputation: 335

Entity Framework ToString method

Following code block throws error.

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

db.tbOnIgmHawbDetails
  .Where(s => !db.tbImpoExaminations.Any(x => x.Hawb.ToString() == s.Hawb) && s.AwbNo == p)
  .Select(s => s.Hawb).ToList();

Any suggestion? why this happen and what is the solution?

Upvotes: 5

Views: 11439

Answers (5)

mrTurkay
mrTurkay

Reputation: 642

do not use ToString

just use like

x.Hawb + "" == s.Hawb

Upvotes: 0

Scott Stafford
Scott Stafford

Reputation: 44818

.ToString() is supported properly going forward with EF 6.1: http://blogs.msdn.com/b/adonet/archive/2014/03/17/ef6-1-0-rtm-available.aspx

Upvotes: 15

xanatos
xanatos

Reputation: 111940

You could try with SqlFunctions.StringConvert... Use the decimal conversion:

SqlFunctions.StringConvert((decimal)p.x.Hawb).TrimLeft() == ...

(the TrimLeft is necessary because the STR function of SQL will right align the number)

Upvotes: 10

Amin Saqi
Amin Saqi

Reputation: 18977

Easily add .AsEnumerable() before the .ToString() and those methods that L2E doesn't support:

var asen = db.tbOnIgmHawbDetails.AsEnumerable();

var result =  asen.Where(s => !asen.Any(x => x.Hawb.ToString() == s.Hawb) && s.AwbNo == p)
  .Select(s => s.Hawb).ToList();

That should works. However if not, try to perform your query by linq-to-objects syntax:

var result = from a in asen
             where ...
             select ...;

Upvotes: 1

dotNET
dotNET

Reputation: 35450

If s.Hawb is already string type (the error message suggests so), then remove the part .ToString() from your query.

The reason for it is that in LINQ2SQL, you can only use those language constructs that can be translated into SQL. For example, if you try to use RegEx in your C# expression, then SQL does not have a corresponding construct for RegEx, and thus LINQ cannot translate and execute your query.

Upvotes: 1

Related Questions