这就是我想要做的:
class MyDbContext : DbContext 
{
    private static Expression<Func<MyClass, int>> myExpression1 = x => /* something complicated ... */;
    private static Expression<Func<Item, int>> myExpression2 = x => /* something else complicated ... */;
    public object GetAllData()
    {
        return (
            from o in MyClassDbSet.AsExpandable() 
            select new 
            {
                data1 = myExpression1.Invoke(o),                      // problem 1
                data2 = o.Items.Select(myExpression2.Compile())       // problem 2
            }
        );
    }
}
更新 :
myExpression必须与我的查询分开,因为我想在多个 LINQ 查询中重用它。
更新 2:
分开myExpression并myExpression1明确myExpression2我想单独重用它们的事实。
更新 3:
将 LINQkit 添加到示例中。
问题 1抛出:无法将类型为“System.Linq.Expressions.FieldExpression”的对象转换为类型“System.Linq.Expressions.LambdaExpression”。
问题 2引发:内部 .NET Framework 数据提供程序错误 1025。