sql >> Database >  >> RDS >> Mysql

LINQ to Entities herkent de methode 'System.String ToString()' niet, en deze methode kan niet worden vertaald in een winkeluitdrukking

Sla de string gewoon op in een tijdelijke variabele en gebruik die dan in je uitdrukking:

var strItem = item.Key.ToString();

IQueryable<entity> pages = from p in context.pages
                           where  p.Serial == strItem
                           select p;

Het probleem ontstaat omdat ToString() wordt niet echt uitgevoerd, het wordt omgezet in een MethodGroup en vervolgens ontleed en vertaald naar SQL. Aangezien er geen ToString() . is equivalent, de uitdrukking mislukt.

Opmerking:

Zorg ervoor dat je ook Alex's antwoord met betrekking tot de SqlFunctions helperklasse die later is toegevoegd. In veel gevallen kan het de noodzaak van de tijdelijke variabele elimineren.



  1. Back-up op tabelniveau

  2. Een tabel maken van het geselecteerde queryresultaat in SQL Server 2008

  3. SQL MAX() voor beginners

  4. Oracle DateTime in Where-clausule?