我需要创建一个表达式以使其像:
Expression<Func<MyDataSet, bool>> searchfilter = null;
string[] strsearchvalues = Searchvalues.Split(',');
searchfilter = p => p.searchcolumn.contains(strsearchvalues[0]) && p.searchcolumn.contains(strsearchvalues[1]) && ....
我尝试了这个,但它不起作用:
Expression<Func<MyDataSet, bool>> columnfilter = null;
foreach(var s in strsearchvalues)
{
columnfilter = p => p.searchcolumn.contains(s);
searchfilter = columnfilter.And(columnfilter);
}
如果搜索值是"鲍勃·史密斯",我想返回结果,列包含鲍勃和史密斯,例如"鲍勃·史密瑟"或" smither boby'。使用上述代码,它返回"鲍比"或"史密斯的东西"。
如何使用循环创建一个表达式以完成它?
谢谢!
尝试这样做:
Expression<Func<MyDataSet, bool>> columnfilter = null;
foreach(var s in strsearchvalues)
{
columnfilter = columnfilter == null ? p => p.searchcolumn.contains(s) : columnfilter.And(p => p.searchcolumn.contains(s)) ;
}
searchfilter = columnfilter;
希望这对您有帮助...