我有一个名为myMainTable的表,我想在我的DataView上操作一个.RowFilter。目前,我的代码就是这样(用于RowFilter的值是一个示例值):
var mainDataView = maindataDataSet.Tables["myMainTable"].DefaultView;
mainDataView .RowFilter = "LastName= '" + "Gemma O'Neil" + "'";
var mainDataTable = mainDataView.ToTable();当然,我的问题是,它认为(因为‘in O’‘Neil),我寻找的值以"Gemma“结束。
我如何才能让它成功地将RowFilter应用于全值"Gemma‘’Neil“?
发布于 2013-08-20 22:09:14
对于这样的情况,您只需要转义“字符;对于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,它们会自动为你处理这个问题。
https://stackoverflow.com/questions/18337092
复制相似问题