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

検索値が「bobSmith」の場合、「bobysmither」や「smitherboby」のように、列にbobとsmithの両方が含まれる結果を返します。上記のコードでは、「bobysomething」または「smithsomething」を返します。 '。

ループを使用して式を作成して実行するにはどうすればよいですか?

ありがとう!

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 に答える