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

时间:2010-08-28 07:16:09

标签: c# lambda

我需要在我的方法中使用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);
    }
}

在这种方法中,我希望它返回与

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

在这种情况下我应该如何构建“expr”?请帮忙。

1 个答案:

答案 0 :(得分:2)

您可以查看Dynamic LINQ库,blogged by Scott Gu here。我之前使用过这个,我已经为工作构建了一个基于规则的产品系统,并使用了存储在我们数据库层中的动态表达式来提供额外的表达式来过滤掉产品集。