我有一个名为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”?
答案 0 :(得分:0)
对于这样的情况,你只需要逃避'角色; RowFilter只是另一个':
string surname = "Gemma O'Neil";
mainDataView .RowFilter = "LastName= '" + surname.Replace("'", "''") + "'";
(或者,neater:
string surname = "Gemma O'Neil";
mainDataView.RowFilter =
String.Format("LastName='{0}', surname.Replace("'", "''"));
)
顺便说一下,这是一个与试图避免SQL注入攻击的人面临的问题非常类似的问题。如果这是一个新的开发,那么我建议调查实体框架和LINQ,它将自动为您处理。