简体   繁体   English

我如何从字符串中创建动态lambda表达式?

[英]How i can make dynamic lambda Expression from string?

I need use Lambda Expression in my method 我需要在我的方法中使用Lambda Expression

public static class QueryableDynamicExtension
{
    public static IQueryable<T> DynamicEquals<T>(
       this IQueryable<T> query,
       string field,
       object value)
    {
        Expression<Func<T, bool>> expr = ???                   

        return query.Where(expr);
    }
}

In this method, I want it return same as 在这个方法中,我希望它返回相同

IQueryable<Article> articles = new ModelDataContext().Articles.Where(m => m.CategoryId == 5);
// I want replace by
IQueryable<Article> articles = new ModelDataContext().Articles.DynamicEquals("CategoryId", 5);

How should I build the "expr" in this case? 在这种情况下我应该如何构建“expr”? Please help. 请帮忙。

You could look into the Dynamic LINQ library, as blogged by Scott Gu here . 你可以查看动态LINQ库, 由Scott Gu在这里发表博客 I've used this previously where I've built a rules-based product system for work, and have used dynamic expressions stored in our database layer to provide additional expressions to filter out product sets. 我之前使用过这个,我已经构建了一个基于规则的产品系统,并使用了存储在我们数据库层中的动态表达式来提供额外的表达式来过滤掉产品集。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM