对C#中以特殊名称开头的所有列进行计数
本文关键字:开头 | 更新日期: 2023-09-27 17:58:56
我有一个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是随机数,大约从1->9。
我建议使用Linq:
DataTable table = ...
int result = table.Columns
.OfType<DataColumn>()
.Count(column => column.ColumnName.StartsWith("A1_"));
Regex是匹配修复后限制(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
类型。
使用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++;
}