我有一个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开始。
发布于 2016-07-27 09:38:36
我建议使用Linq:
DataTable table = ...
int result = table.Columns
.OfType<DataColumn>()
.Count(column => column.ColumnName.StartsWith("A1_"));
发布于 2016-07-27 09:43:32
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
类型。
发布于 2016-07-27 09:44:55
使用LINQ
int count = table.Columns.Cast<DataColumn>()
.Count(c => c.ColumnName.StartsWith("A1_"));
使用前景
int count = 0;
foreach(DataColumn dc in table)
{
if (dc.ColumnName.StartsWith("A1_"))
count++;
}
https://stackoverflow.com/questions/38609152
复制相似问题