我有一个DataTable包含所有列:
B0_1 A1_1 B0_2 A1_2 B0_3 A1_3 B0_4 A1_4
如何仅计算以A1_
开头的列?
我的变量包含A1_x
,如下所示:
nameCol + n.ToString() + "_" +
注意:在此示例中,您可以看到A1_1 -> A1_4
但是4是randoms数字,大约是1 - > 9。
答案 0 :(得分:4)
我建议使用Linq:
DataTable table = ...
int result = table.Columns
.OfType<DataColumn>()
.Count(column => column.ColumnName.StartsWith("A1_"));
答案 1 :(得分:0)
正则表达式是一种匹配修复后限制(A1_x
与1 < x < 9
)的选项:
DataTable dt = new DataTable();
dt.Columns.Add("A1_a"); // out
dt.Columns.Add("A1_6"); // in
dt.Columns.Add("A1_5"); // in
dt.Columns.Add("A1_7"); // in
dt.Columns.Add("A1_0"); // out
dt.Columns.Add("A1_1"); // out
dt.Columns.Add("A1_9"); // out
// count result is: 3
var count = (from col in dt.Columns.OfType<DataColumn>()
where Regex.IsMatch(col.ColumnName, "A1_[2-8]")
select col).Count();
您需要添加using System.Text.RegularExpressions;
才能使用Regex
类型。
答案 2 :(得分:0)
使用LINQ
int count = table.Columns.Cast<DataColumn>()
.Count(c => c.ColumnName.StartsWith("A1_"));
使用foreach
int count = 0;
foreach(DataColumn dc in table)
{
if (dc.ColumnName.StartsWith("A1_"))
count++;
}