3

状況:

こんにちは!C#プロジェクトで少し問題があります。DataTableオブジェクトからSelectメソッドを使用し、式を使用して必要なものを取得していますが、式に使用している文字列の1つにスペースがあるという問題があります。

だからここに私が持っているもののコードサンプルがあります:

DataTable table;
//...  
DataRow[] rows = table.Select("[" + columnNameStr + "]" + " LIKE '*" + searchStr + "*'");
//...

文字列searchStrには、空白を含めることができます。したがって、たとえば、searchStrにBob Dudeなどの名前があり文字列をDude Bobにする必要がある場合、select式は結果を返しません。


質問:

searchStr内の単語が必ずしも正しい順序で結果を取得できない場合に結果を取得する場合に使用する必要がある式は何ですか?

4

2 に答える 2

4

別の簡単な方法が私のために働いた。

searchStrは"Hello World".

DataTable.Select("ColumnName" + "'" + searchStr + "'");

(')重要なのは、検索文字列の前後に一重引用符を追加することです。

于 2009-11-12T06:05:43.663 に答える
2

検索文字列をスペースで分割し、ORを使用してループ内で式文字列を作成します。これらの線に沿った何かがあなたのために働くかもしれません:

var searchStr = "Bob Dude";
var splitSearchString = searchStr.Split(' ');
var columnNameStr = "Name";
var expression = new List<string>();
DataTable table = new DataTable();
//...  
foreach (var searchElement in splitSearchString)
{
    expression.Add(
        string.Format("[{0}] LIKE '*{1}*'", columnNameStr, searchElement));
}
var searchExpressionString = string.Join(" OR ", expression.ToArray());
DataRow[] rows = table.Select(searchExpressionString);
于 2009-08-16T20:27:02.290 に答える