El objeto de retorno LINQ to SQL estaba implementando la IQueryableinterfaz. Entonces, para el Selectparámetro de predicado de método, solo debe proporcionar una sola expresión lambda sin cuerpo.
Esto se debe a que el código LINQ for SQL no se ejecuta dentro del programa en lugar de en el lado remoto, como el servidor SQL u otros. Este tipo de ejecución de carga diferida se logró mediante la implementación de IQueryable donde su delegado esperado se está envolviendo en la clase de tipo Expresión como se muestra a continuación.
Expression<Func<TParam,TResult>>
El árbol de expresión no admite la expresión lambda con cuerpo y solo admite la expresión lambda de una sola línea como var id = cols.Select( col => col.id );
Entonces, si intentas, el siguiente código no funcionará.
Expression<Func<int,int>> function = x => {
return x * 2;
}
Lo siguiente funcionará según lo esperado.
Expression<Func<int,int>> function = x => x * 2;