一个特殊符号“'”,datatable.select方法中的条件值如何处理?例如:datatable.select(“name ='test's'”);
答案 0 :(得分:2)
我会使用Linq-To-DataSet
:
var filteredRows = from row in datatable.AsEnumerable()
where row.Field<string>("name") == "test's"
select row;
如果您想要一个只有匹配的新ToArray
,那么您可以使用DataRow[]
DataTable.Select
(如CopyToDataTable
返回)或DataTable
行或您只需使用foreach
枚举这些行。
你也可以留在DataTable.Select
,你需要用两个来逃避撇号:
datatable.Select(string.Format("name ='{0}'", "test's".Replace("'","''")));
答案 1 :(得分:2)
DataTable.Select
method使用与DataColumn.Expression
property相同的表达式规则。
来自文档;
用户定义的值
用户定义的值可以在要与之比较的表达式中使用 列值。字符串值应该包含在单个值中 引号(和字符串值中的每个单引号字符 必须通过在另一个单引号前加上它来逃避 字符)。强>
如果你的字符串是test's
,首先你应该使用另一个单引号来转义字符串中的引号,然后你应该使用另一个引号括起你的字符串。
像;
datatable.select("name = 'test''s'");
同样Tim suggested ,使用String.Format
方法可能会更清晰。等;
datatable.Select(string.Format("name ='{0}'", "test's".Replace("'","''")));
//Stolen from Tim's answer :)