DataTable选择:具有空间问题的表达式

时间:2009-08-16 19:58:38

标签: c# string select datatable expression

情况:

您好!我在C#项目中遇到了一些问题。我正在使用DataTable对象中的Select方法并使用表达式来获取我想要的内容,但是我在使用表达式中的一个字符串中的空格时遇到了一些问题。

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

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

字符串 searchStr 可以包含空格。例如,如果您在 searchStr 中有 Bob Dude 等名称,则字符串应为 Dude Bob 相反,select表达式不会返回任何结果。


问题:

如果我想在 searchStr 中的单词不一定是正确的顺序来获得结果时,我需要使用什么表达式?< / p>

2 个答案:

答案 0 :(得分:3)

另一种更简单的方法对我有用。

说searchStr是"Hello World".

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

关键是在&amp;之前添加单引号(')在搜索字符串之后。

答案 1 :(得分: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);