【发布时间】:2010-03-19 10:40:16
【问题描述】:
使用多种方法实现了一个通用存储库。其中之一是:
public IEnumerable<T> Find(Expression<Func<T, bool>> where)
{
return _objectSet.Where(where);
}
鉴于<T> 是<Culture>,这样称呼很容易:
Expression<Func<Culture, bool>> whereClause = c => c.CultureId > 4 ;
return cultureRepository.Find(whereClause).AsQueryable();
但现在我看到(意识到)这种查询是“仅限于一个标准”。 我想做的是:
在上面的例子中,c 是 Culture 类型。 Culture 有几个属性,例如 CultureId、Name、Displayname... 我将如何表达以下内容: CultureId > 4 和 Name.contains('de') 并在另一个执行中 Name.contains('us') 和 Displayname.contains('ca') 和 ....
这些查询应该是动态创建的。 我查看了表达式树(因为我认为这是解决我的问题的方法 - 顺便说一句,我以前从未使用过它们)但我找不到任何符合我要求的东西。
如何构建?
提前致谢
【问题讨论】:
标签: dynamic lambda expression-trees