Simplemente guarde la cadena en una variable temporal y luego utilícela en su expresión:
var strItem = item.Key.ToString();
IQueryable<entity> pages = from p in context.pages
where p.Serial == strItem
select p;
El problema surge porque ToString()
no se ejecuta realmente, se convierte en un Grupo de métodos
y luego analizado y traducido a SQL. Como no hay ToString()
equivalente, la expresión falla.
Nota:
Asegúrese de consultar también Respuesta de Alex
con respecto a las SqlFunctions
clase auxiliar que se agregó más tarde. En muchos casos, puede eliminar la necesidad de la variable temporal.