2

我需要创建一个表达式来使它像:

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

如果搜索值为“bob Smith”,我希望结果返回包含 bob 和 smith 的列,例如“boby smither”或“smither boby”。使用上面的代码,它返回“boby something”或“smith something” '。

如何创建一个带有循环的表达式来完成它?

谢谢!

4

1 回答 1

0

尝试这样做:

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;

希望这对你有帮助......

于 2012-11-06T17:49:53.690 回答