2010-08-28 45 views
3

我需要在我的方法如何从字符串中制作动态lambda表达式?

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); 
    } 
} 

使用Lambda表达式在这种方法中,我想把它当作

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的”回归一样吗?请帮忙。

回答

2

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

+0

感谢您的回答,我也知道动态LINQ库,它可以解决我的问题,但它太复杂了,我只想在我的项目中使用一些Lambda表达式。所以如果可能的话,你可以为我解决我的问题。谢谢! – user433557 2010-08-29 02:23:58

相关问题