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.