我试图做在LINQ动态加入。 也就是说,我只知道在运行时哪些领域的加盟将发生在。
我已经做了以下情况:
var itemParam = Expression.Parameter(typeof(E), "obj");
var entityAccess = Expression.MakeMemberAccess(Expression.Parameter(typeof(E), "obj"), typeof(E).GetMember(Field).First());
var lambda = Expression.Lambda(entityAccess, itemParam);
var q = dbSet.Join(context.Acl, lambda, acl => acl.ObjectID, (entity, acl) => new { Entity = entity, ACL = acl });
然而,这将引发在编译时,即使拉姆达似乎是正确的语法告诉我,它不能从LambdaExpression转换为Expression<System.Func<E, int>>
。
我如何得到它来创建合适的表情是动态的(在IE属性“现场”上面使用我的领域typeof(E).GetMember(Field).First())
行?