在数据表上进行选择时出现异常

时间:2014-04-19 22:36:30

标签: c# datatable

这是我的代码

var compainNames = (from row in DTgraph.AsEnumerable()
                                group row by row.Field<string>("Campaign") into grp
                                select new
                                {
                                    CampaignName = grp.Key
                                }).ToList();

 var dataForOneCampaint = DTgraph.Select("Campaign = " + compainNames[i].ToString()).ToList();

其中DTgraph是数据表。

我遇到了这个例外:

  

无法解释位置12处的令牌“{”。

你能帮忙吗?

我调试,我可以看到compainNames有3个字符串

此行中的例外

 var dataForOneCampaint = DTgraph.Select("Campaign = " + compainNames[i].ToString()).ToList();

2 个答案:

答案 0 :(得分:3)

DataTable.Select方法使用与DataColumn.Expression property相同的规则来创建过滤器。

来自它的文档;

  

用户定义的值

     

用户定义的值可以在要与之比较的表达式中使用   列值。 字符串值应包含在单个值中   引号(以及字符串值中的每个单引号字符   必须通过在另一个单引号前加上它来逃避   字符)。

我相信你可以使用;

var dataForOneCampaint = DTgraph
                        .Select("Campaign = '" + compainNames[i].ToString() + "'")
                        .ToList();

或使用String.Format作为Felipe mentioned

答案 1 :(得分:2)

尝试使用'之间的string字符,示例:

var dataForOneCampaint = DTgraph
                        .Select(string.Format("Campaign = '{0}'", compainNames[i].ToString()))
                        .ToList();