【发布时间】:2015-10-20 08:28:54
【问题描述】:
我有一个包含 20 个项目的字符串列表,如下所示
List<string> votingcodes = new List<string> { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20"};
我正在使用正则表达式模式从另一个数据表中获取数据视图中的匹配数据,如下所示
for (int i = 0; i < 20; i++)
{
var r = new Regex("^.*\\b" + votingcodes[i] + "\\b.*$", RegexOptions.Compiled);
DataView dv = (from t in dtFetch.AsEnumerable()
where r.IsMatch(t.Field<string>("FMSG_IN").ToUpper())
select t).AsDataView();
}
获取数据后,我更新了记录,但我还需要来自 dtFetch 数据表的不匹配数据。
我怎样才能做到这一点。
【问题讨论】:
-
where !r.IsMatch(t.Field<string>("FMSG_IN").ToUpper())? -
我知道!是适用的,但这会产生两个循环,一个用于匹配,另一个用于不匹配。此外,它会在第一个循环中为我提供 2-20 的不匹配数据,这是不正确的。
-
您应该在问题中提及这一点。但是,您真的需要
DataView作为结果吗?因为您无法添加另一列来指示它是否是匹配行。 -
我正在使用 dataview 来获取匹配数据的计数,其中还包含用于根据 ID 更新记录的列。如果您建议,那么我们可以使用 dtFetch DataTable 逐个更新记录,如果匹配返回 true,否则返回 false,我会相应地进行更新。