【问题标题】:Exception in a LIKE query with DataTable带有 DataTable 的 LIKE 查询中的异常
【发布时间】:2014-03-22 14:16:04
【问题描述】:

我的输入是 '[CL' 我缺少右括号。列包含“[CL]”。我在“MYStps”列中使用类似查询。但我遇到了一个例外。附上下图。

{
    DataRow[] searchResult = MyDataTable.Select("MYStps Like '%" + txtSearchLog_Level.Text.Trim() + "%'");
}

【问题讨论】:

  • 您必须提供更详细的代码。例如这是什么:txtSearchLog_Level?显然你正在输出“[CL”
  • @ohlmar OP 说文本框有 [CL
  • Linq 解决方案怎么样? var searchResult = MyDataTable.AsEnumerable().Where(r => r.Field<string>("MYStps").Contains(txtSearchLog_Level.Text.Trim())).ToArray()
  • 问题出在 '[' 字符中。当您尝试使用 '[' 字符过滤记录时,Visual Studio 将抛出异常“Like Operator 中的错误。使用 [[] 而不是 [。social.msdn.microsoft.com/Forums/vstudio/en-US/…

标签: c# winforms datatable


【解决方案1】:

因为您的文本包含[,它是wildcard character。

来自LIKE (Transact-SQL)“使用通配符作为文字”部分下

您可以使用通配符模式匹配字符作为文字 人物。 要将通配符用作文字字符, 将通配符括在括号中。

例如;

Symbol       -- Meaning
LIKE '[[]'   -- [

在您的情况下,您的文本应该是[[]CL,因此您可以将其用作字符串文字。

一种解决方案可以在您使用 DataTable.Select 方法之前将您的 [ 替换为 [[];

string s = txtSearchLog_Level.Text.Trim().Replace("[", "[[]");
DataRow[] searchResult = MyDataTable.Select("MYStps Like '%" + s + "%'");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-12
    • 1970-01-01
    • 1970-01-01
    • 2011-07-22
    • 1970-01-01
    • 2013-11-24
    相关资源
    最近更新 更多