我尝试将多项选择与lambda函数组合到一个lambda表达式中。我该怎么做?我知道最后一行是错的,但让你明白我的意思。
Func<Event, bool> where = null;
if (!string.IsNullOrWhiteSpace(searchToken))
where = q => q.Name.ToUpper().Contains(searchToken.ToUpper());
where += q => q.Hidden = false;
Expression<Func<Event, bool>> where1 = q => where; <-- Erroring发布于 2011-10-16 15:30:54
我怀疑你想要PredicateBuilder。(源代码可以在该页面上找到。)你可以这样使用它:
var predicate = q => !q.Hidden;
if (!string.IsNullOrWhiteSpace(searchToken))
{
predicate = predicate.And(q => q.Name.ToUpper()
.Contains(searchToken.ToUpper());
}
return predicate;这是假设你想要“和”条件-你从来没有说清楚...
注意,这也不是以不区分大小写的方式进行比较的好方法。如果你能告诉我们什么将消耗查询(例如LINQ to SQL,LINQ to EF),我们可以建议一种与提供者兼容的方式来执行不区分大小写的查询。
发布于 2011-10-16 15:17:53
看看http://msdn.microsoft.com/en-us/library/bb882637.aspx吧。如何使用表达式树构建动态查询。
当使用Expression <>时,像这样的表达式必须在编译时是已知的,因为编译器随后会构建AST抽象语法3并将其作为数据存储在expression <>实例中。
https://stackoverflow.com/questions/7781209
复制相似问题