0

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

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

我的问题当然是它认为(因为奥尼尔中的')我正在寻找的价值以“Gemma O”结束。

我怎样才能让它成功地将 RowFilter 应用于完整值 "Gemma O'Neil" ?

4

1 回答 1

0

对于这种情况,您只需要转义 ' 字符;对于 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,它们会自动为您处理。

于 2013-08-20T14:09:13.893 回答