我有一个以下格式的字符串数组,其中每个字符串都以一系列三个字符开头,指示它包含的数据类型。例如:
ABC|.....
DEF|...
RHG|1........
RHG|2........
RHG|3........
XDF|... ...
我想找到任何重复的行(本例中为 RHG)并用特殊字符标记最后一行:
>RHG|3…………
最好的方法是什么?我当前的解决方案有一种方法来计算行标题并创建一个包含标题计数的字典。
protected Dictionary<string, int> CountHeaders(string[] lines)
{
Dictionary<string, int> headerCounts = new Dictionary<string, int>();
for (int i = 0; i < lines.Length; i++)
{
string s = lines[i].Substring(0, 3);
int value;
if (headerCounts.TryGetValue(s, out value))
headerCounts[s]++;
else
headerCounts.Add(s, 1);
}
return headerCounts;
}
在主要的解析方法中,我选择了重复的行。
var repeats = CountHeaders(lines).Where(x => x.Value > 1).Select(x => x.Key);
foreach (string s in repeats)
{
// Get last instance of line in lines and mark it
}
这是我所得到的。我想我可以用另一个 LINQ 查询做我想做的事,但我不太确定。另外,我不禁觉得有一个更优化的解决方案。