He estado luchando con la misma pregunta, y se dio cuenta de que una pregunta así formada es un problema resuelto.
IQueryable básicamente sirve para filtrar la consulta antes de enviarla a su llamada a la base de datos, de modo que en lugar de obtener 1000 registros y filtrar solo 10, se obtienen esos 10 para comenzar. Ese filtro pertenece a su capa de servicio, pero si está creando una API, supongo que la correlacionará con parámetros Y/O en su URL.
http: // {host}/{entity}/q? Name = john & edad = 21.
por lo que terminan con algo como esto:
Filter:Column1=Value1 > http://{host}/{entity}q?column1=value1 > SELECT *
FROM Entity
WHERE Column1=Value1
MVC > WCF > DB
se puede encontrar una muy buena muestra de [here]
Por último, ya que su carga útil del WCF será muy probablemente un JSON, se puede (y debería) deserializarlos en sus Modelos de Dominio dentro de una colección. Es hasta este punto donde debería producirse la búsqueda, así que recomendaría algunos caché de WCF (y dado que es HTTP, es realmente simple). Todavía utilizará LINQ en el lado de la aplicación web, sin la cláusula LINQ "DÓNDE" (a menos que desee crear dinámicamente la URL expresada anteriormente)
Para una consulta O compleja, le importaría terminar con múltiples WCF consultas (1 por "y") y luego concatenar todos juntos
Para Silverlight puede utilizar los servicios de WCF RIA – RichardOD