2013-08-20 159 views
0

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

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

我当然有问题,它认为(因为“在奥尼尔)的我期待的价值在“Gemma O”结束。

我怎样才能成功地应用RowFilter的全价值“杰玛奥内尔”?

回答

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注入攻击。如果这是一个新的发展,那么我建议调查实体框架和LINQ,它会自动处理这个。

+0

谢谢。我认为“只会完全打乱查询。很高兴知道它只是将其视为单引号。谢谢!根据你的建议,我会看看LINQ – touyets