C# LINQ to SQL中select中的表达式
如果我使用LINQ to对象,我可以在Select中使用C# LINQ to SQL中select中的表达式,c#,entity-framework,linq,iqueryable,C#,Entity Framework,Linq,Iqueryable,如果我使用LINQ to对象,我可以在Select中使用Func,如下所示: Enumerable.Range(1, 10).Select(x => new { A = x, B = SomeFunc }); Func<int, long> SomeFunc = x => x * x; Expression<Func<int, long>> SomeExpr = x => x * x; 其中SomeFunc是这样的: Enumerabl
Func
,如下所示:
Enumerable.Range(1, 10).Select(x => new { A = x, B = SomeFunc });
Func<int, long> SomeFunc = x => x * x;
Expression<Func<int, long>> SomeExpr = x => x * x;
其中SomeFunc
是这样的:
Enumerable.Range(1, 10).Select(x => new { A = x, B = SomeFunc });
Func<int, long> SomeFunc = x => x * x;
Expression<Func<int, long>> SomeExpr = x => x * x;
其中SomeExpr
是这样的:
Enumerable.Range(1, 10).Select(x => new { A = x, B = SomeFunc });
Func<int, long> SomeFunc = x => x * x;
Expression<Func<int, long>> SomeExpr = x => x * x;
表达式SomeExpr=x=>x*x;
如何在Select in查询中使用表达式?问题是x=>new{…}已经是作为参数传递给Select(…)的表达式。如果在select表达式中编译并调用SomeExpr,代码将正常工作
Expression<Func<int, long>> SomeExpr = x => x * x;
var query = Enumerable.Range(1, 10)
.AsQueryable()
.Select(x => new { A = x, B = SomeExpr.Compile().Invoke(x) });
表达式SomeExpr=x=>x*x;
变量查询=可枚举的范围(1,10)
.AsQueryable()
.Select(x=>new{A=x,B=SomeExpr.Compile().Invoke(x)});
您必须编译并执行查询
var query2 = Enumerable.Range(1, 10)
.AsQueryable()
.Select(x => new { A = x, B = SomeExpr.Compile().DynamicInvoke(x) });
也许你可以试试System.Linq.Expression-Class(),你是否可以使用第三方软件包?为什么要在查询中投影的对象中使用
Func
?这意味着我不能使用“System.Linq.Expressions.Expression”?我想使用Func或Expression,因为我需要将一些代码移动到另一个程序集。我想使用表达式,因为Func不适用于IQueryableUnfortunatelly,我遇到了异常“LINQ to Entities无法识别方法'System.Object DynamicInvoke(System.Object[])方法,并且此方法无法转换为存储表达式。”