代码之家  ›  专栏  ›  技术社区  ›  Partial

数据表选择:有空间问题的表达式

  •  3
  • Partial  · 技术社区  · 15 年前

    情况:

    你好!我在C项目中有一个小问题。我正在使用数据表对象中的select方法,并使用表达式来获取我想要的内容,但是我在为表达式使用的某个字符串中遇到了一些空间问题。

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

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

    搜索器 可以有一个空白。例如,如果你有一个名字,比如 鲍勃多德 在里面 搜索器 字符串应该是 纨绔子弟 相反,select表达式不会返回任何结果。


    问题:

    如果我想在单词 搜索器 结果的顺序不一定正确吗?

    2 回复  |  直到 11 年前
        1
  •  2
  •   Scott Ferguson    15 年前

    在空格上拆分搜索字符串,然后使用或在循环中生成表达式字符串。 沿着这些线的某些东西可能对您有用:

    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);
    
        2
  •  3
  •   Suraj Singh    11 年前

    另一个简单的方法对我有效。

    假设搜索字符串是 "Hello World".

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

    关键是添加一个单引号 (') 搜索字符串前后。