Подсчитайте одинаковые строки в списке строк и сделайте их уникальными

У меня есть список слов, которые являются биграммами в качестве примера:

welcome guys
guys and
and ladies
ladies repeat
repeat welcome
welcome guys

Теперь я хочу посчитать равные строки и получить результат:

welcome guys, 2
guys and, 1
and ladies, 1
ladies repeat, 1
repeat welcome, 1

Как я могу сделать это в C#?

1 ответ

Решение

Это можно сделать с помощью Linq и GroupBy функционировать довольно легко:

var input = new string[]
    {
        "welcome guys",
        "guys and", 
        "and ladies",
        "ladies repeat",
        "repeat welcome",
        "welcome guys"
    };

var groups =
    input
    .GroupBy(x => x);

foreach (var g in groups)
{
    Console.WriteLine("{0}, {1}", g.Key, g.Count().ToString());
}

добро пожаловать, ребята, 2
ребята а, 1
и дамы, 1
дамы повторяют, 1
повторить добро пожаловать, 1

Другие вопросы по тегам