首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在动态linq查询中调用linqkit表达式

在动态linq查询中调用linqkit表达式
EN

Stack Overflow用户
提问于 2013-07-30 20:03:58
回答 1查看 1.2K关注 0票数 1

如何调用此LinqKit表达式

代码语言:javascript
复制
    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查询中运行良好,如下所示

代码语言:javascript
复制
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导入,但它仍然不起作用。

我希望能够做这样的事情

代码语言:javascript
复制
var ex = context.Transaction.AsExpandable()
.Select (transaction=>transaction)
.Select("new { test = expressionOfStatusName.Invoke(transaction)");

谢谢你的帮助

EN

回答 1

Stack Overflow用户

发布于 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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17946533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档