情况:

你好!我在C#项目中有一个小问题。我正在使用DataTable对象中的Select方法,并使用表达式来获取所需的内容,但是我在表达式中使用的字符串之一中的空格存在一些麻烦。

所以这是我所拥有的代码示例:

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


字符串searchStr可以在其中包含空格。因此,例如,如果您在searchStr中具有诸如Bob Dude之类的名称,并且字符串应为Dude Bob,则select表达式将不返回任何结果。



题:

如果searchStr中的单词不一定正确地获得结果时要获得结果,我需要使用什么表达式?

最佳答案

将搜索字符串拆分为空格,然后使用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);

10-08 18:32