【发布时间】:2016-08-16 03:47:50
【问题描述】:
我仍处于学习 C# 的初级阶段,在按文件中出现的次数对字符串进行排序时遇到了问题。
到目前为止,这是我的代码:
string[] listLines = System.IO.File.ReadAllLines(@"F:\VS\AI.xls");
Array.Sort<string>(listLines); // sort alfabeticaly
System.Console.WriteLine("History of experienced feeds:");
/*
foreach (var line in listLines) //loop to return lines in alfabetical order
{
Console.WriteLine("\t" + line);
}
*/
// counts occurrences
var dict = new Dictionary<string, int>();
foreach (var value in listLines)
{
if (dict.ContainsKey(value))
dict[value]++;
else
dict[value] = 1;
}
foreach (var pair in dict)
Console.WriteLine("{1} times {0}", pair.Key, pair.Value);
System.Console.WriteLine("");
System.Console.WriteLine("Press Enter to see most common feeds:");
Console.ReadKey();
/* Finds duplicates and sorts them alphabetically */
System.Console.WriteLine("Most common:");
var duplicates = listLines.GroupBy(i => i)
.Where(g => g.Count() > 1)
.Select(g => g.Key);
foreach (var d in duplicates)
Console.WriteLine(d);
如您所见,这可以分为两部分。首先,我计算每个字符串以获取它们出现的次数。然后,我只显示出现多次的那些 - 按字母顺序。
我需要的是介于两者之间的东西:一种显示重复字符串的方法,但按从最少出现到最多出现的顺序显示。
您能指导我以正确的方式实现这一目标吗?
谢谢,
【问题讨论】:
标签: c# string sorting duplicates