3

情况:

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

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

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 回答