【问题标题】:RowFilter with special characters带有特殊字符的 RowFilter
【发布时间】:2016-01-08 00:06:42
【问题描述】:

我有一个名为 myMainTable 的表,我想在我的 DataView 上操作一个 .RowFilter。目前我的代码是这样的(用于 RowFilter 的值是一个示例值):

var mainDataView = maindataDataSet.Tables["myMainTable"].DefaultView;
mainDataView .RowFilter = "LastName= '" + "Gemma O'Neil" + "'";
var mainDataTable = mainDataView.ToTable();

我的问题当然是它认为(因为 O'Neil 中的 ')我正在寻找的值以“Gemma O”结尾。

我怎样才能让它成功应用 RowFilter 以获得完整的值“Gemma O'Neil”?

【问题讨论】:

    标签: c# filtering rowfilter


    【解决方案1】:

    对于这样的情况,您只需要转义 ' 字符;这对于 RowFilter 来说只是另一个':

      string surname = "Gemma O'Neil";
      mainDataView .RowFilter = "LastName= '" + surname.Replace("'", "''") + "'";
    

    (或者,更简洁:

      string surname = "Gemma O'Neil";
      mainDataView.RowFilter =
            String.Format("LastName='{0}', surname.Replace("'", "''"));
    

    )

    顺便说一句,这与人们试图避免 SQL 注入攻击所面临的问题非常相似。如果这是一项新开发,那么我建议您研究 Entity Framework 和 LINQ,它们会自动为您处理。

    【讨论】:

    • 谢谢。我认为 '' 会完全破坏查询。很高兴知道它只是将其视为单引号。谢谢!我会根据你的建议来看看 LINQ
    猜你喜欢
    • 1970-01-01
    • 2023-03-14
    • 2012-10-06
    • 2018-11-14
    • 2012-09-15
    • 2017-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多