C# DataTable每行字符出现次数统计方法问询
C# DataTable行内字符统计解决方案
DataTable.Compute仅适用于列级聚合计算,无法直接实现行内单元格的字符统计,最优方案是遍历每行的单元格逐个计数,以下是两种场景的实现代码:
场景1:统计指定字符在每行的出现次数
比如统计字符'x'的行内出现次数:
// 假设dt为目标DataTable char target = 'x'; foreach (DataRow row in dt.Rows) { int count = 0; foreach (var cell in row.ItemArray) { char c = Convert.ToChar(cell); if (c == target) count++; } Console.WriteLine($"行{dt.Rows.IndexOf(row)}中'{target}'出现{count}次"); }
场景2:统计每行所有字符的出现次数
对应示例需求,输出每行所有字符的频次:
foreach (DataRow row in dt.Rows) { var charFreq = new Dictionary<char, int>(); foreach (var cell in row.ItemArray) { char c = Convert.ToChar(cell); if (charFreq.ContainsKey(c)) charFreq[c]++; else charFreq[c] = 1; } Console.WriteLine($"行{dt.Rows.IndexOf(row)}字符统计:"); foreach (var pair in charFreq) { Console.WriteLine($"'{pair.Key}'出现{pair.Value}次"); } }
注意事项
- 因DataTable无列名,直接通过
row.ItemArray遍历所有单元格即可,无需依赖列名。 - 若单元格存储的是长度为1的字符串而非
char类型,可将Convert.ToChar(cell)替换为cell.ToString()[0]。
内容的提问来源于stack exchange,提问作者notarobot
相关产品推荐
相关产品推荐

