Предположение:
Допустим, у нас уже есть каждая строка текстового файла в объекте List<string>
, который мы назовем names
, и что каждая строка в текстовом файле представляет собой целое имя, написанное правильно.
Группировка / печать данных:
Используя LINQ, мы можем сгруппировать эти значения самостоятельно (аналогично SQL) и затем преобразовать результаты IGrouping
в объекты, которые мы хотим использовать позже в нашем приложении.,Например:
var totals = names.GroupBy(x => x)
.Select(group => new { Name = group.Key, Count = group.Count() });
foreach ( var total in totals )
{
Console.WriteLine($"{total.Name} | {total.Count} times");
}
Другой вариант - использовать существующий код и просто распечатать значения словаря
var totals = names
.Select(s => new { Key = s.Key, Count = s.Count()})
.ToDictionary(d => d.Key, d => d.Count);
foreach ( var kvp in totals )
{
Console.WriteLine($"{kvp.Key} | {kvp.Value} times");
}
Сохранение / отображение данных:
Если вы хотите сделать что-то другое, то печатать на консоль, вы можете просто манипулировать данными в нужное вам значение.Например, если вы хотите сохранить его в другом файле:
var csvContent = totals
.Select(total => $"{total.Name},${total.Count} times")
.ToArray();
File.WriteAllLines(filePath, csvContent);
Или вы можете создать строку (например, выше: String.Join("\n", csvContent)
) и обновить RichTextBox примерно так: