情况:
你好!我在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);