首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在linq查询中扩展LinqKit并使用自定义方法?

如何在linq查询中扩展LinqKit并使用自定义方法?
EN

Stack Overflow用户
提问于 2018-06-21 11:40:26
回答 1查看 367关注 0票数 0

我想利用LinqKit的AsExpandable特性来在linq查询中转换我的自定义方法。

我可以通过实现自己的表达式访问者来实现这一点,这将将我的自定义方法转换为EF提供程序可以理解的表达式。

在深入研究LinqKit源代码之后,在我看来,LinqKit并不是为了支持这样的场景而设计的,即使它在主页上这样说过(参见捕获)。

如何将自定义访问者插入LinqKit的管道?有什么想法或建议吗?

非常感谢!

里亚娜

从…

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-25 14:35:47

我想他们指的是AsExpandable的超载

代码语言:javascript
复制
public static IQueryable<T> AsExpandable<T>(this IQueryable<T> query, Func<Expression, Expression> queryOptimizer)

尽管该参数名为"queryOptimizer",但实际上可以传入任何Func<Expression, Expression>,并在表达式传递给查询提供程序之前立即调用该参数:

代码语言:javascript
复制
    IQueryable<TElement> IQueryProvider.CreateQuery<TElement>(Expression expression)
    {
        var expanded = expression.Expand();
        var optimized = _queryOptimizer(expanded);
        return _query.InnerQuery.Provider.CreateQuery<TElement>(optimized).AsExpandable();
    }

默认情况下,_queryOptimizer只是一个ID函数。之所以这样命名,是因为LinqKit也附属于这个项目:https://github.com/Thorium/Linq.Expression.Optimizer

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

https://stackoverflow.com/questions/50967711

复制
相关文章

相似问题

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