特殊符号出现数据表选择查询

时间:2014-02-10 08:46:53

标签: c#

一个特殊符号“'”,datatable.select方法中的条件值如何处理?例如:datatable.select(“name ='test's'”);

2 个答案:

答案 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 :)