Метод GroupBy
- это то, что вам нужно. Вам нужно, чтобы ваши строки были в списке или что-то, что реализует IEnumerable<string>
. File.ReadLines
, предложенный spender, вернет IEnumerable<string>
, который читает файл построчно.
var stringGroups = File.ReadLines("filename.txt").GroupBy(s => s);
foreach (var stringGroup in stringGroups)
Console.WriteLine("{0} , {1}", stringGroup.Key, stringGroup.Count());
Если вы хотите, чтобы они были в порядке наименьшего для большинства (как в вашем примере), просто добавьте OrderBy
...
foreach (var stringGroup in stringGroups.OrderBy(g => g.Count()))
...