如何调用此LinqKit表达式
public static Expression<Func<Transaction, string>> ExpressionOfStatusName
{
get
{
Expression<Func<Transaction, string>> status =
(transaction) => transaction.TransactionStatus.Name;
return status;
}
}在动态linq查询中(Linq作为字符串使用微软的System.Linq.Dynamic )
这个表达式在标准的Linq查询中运行良好,如下所示
Expression<Func<Transaction, string>> expressionOfStatusName = Transaction.ExpressionOfStatusName;
var ex = from transaction in context.Transaction.AsExpandable()
select expressionOfStatusName.Invoke(transaction)但是当我试图从一个动态linq查询中调用它时,我收到了一个错误:“在类型'Expression`1‘中没有适用的方法'Invoke’存在。我已经尝试在文件System.Linq.Dynamic中添加linqkit导入,但它仍然不起作用。
我希望能够做这样的事情
var ex = context.Transaction.AsExpandable()
.Select (transaction=>transaction)
.Select("new { test = expressionOfStatusName.Invoke(transaction)");谢谢你的帮助
发布于 2013-07-30 21:55:04
Linq需要func的表达式。您可以使用MS Linq.Dynamic扩展,它接受字符串并将其转换为表达式树。或者,您可以使用任何您喜欢的工具来构建表达式树。但是,MS dynamic linq扩展解析的字符串输入是有限的。Some sample docu/blog你要求它解析expressionOfStatusName.Invoke(事务)“我不认为它能做到这一点。你可以调试源代码来检查。但我记得在那里看到过简单的成员分析。The source is here
此外,我认为一旦你通过了解析挑战,你就已经突破了可接受的匿名类型输入的极限。anonymous types and Linq
https://stackoverflow.com/questions/17946533
复制相似问题