显示列表中的重复项C#

cod*_*k24 3 c# linq wpf list

我正在使用WPF应用程序,有一次,我必须从字符串列表中获取/显示所有重复项。(具有重复的字符串名称和列表中相同字符串的数量)例如:“该列表包含字符串'Hello'3次。” 到目前为止,我已经成功获取了字符串的名称,但是我无法设法获得正确的出现在列表中的次数。到目前为止,这是我的代码:

List<String> answerData = new List<String>();

using (MySqlCommand command = new MySqlCommand(query2, conn))
                {
                    using (MySqlDataReader reader = command.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            answerData.Add(reader.GetString(0));
                        }
                    }
                }

var duplicates = answerData
                .GroupBy(i => i)
                .Where(g => g.Count() > 1)
                .Select(g => g.Key);

foreach (var d in duplicates)
{           
    MessageBox.Show(""+ d + duplicates.Count().ToString()); //Here I tried to get the number
    //with Count() but it doesn't work as I thought it would. 

}
Run Code Online (Sandbox Code Playgroud)

我应该添加/更改什么以获得我想要的结果?

编辑

按照建议将我的代码更改为以下内容:

var duplicates = answerData
                .GroupBy(i => i)
                .Where(g => g.Count() > 1);

foreach (var d in duplicates)
{
  MessageBox.Show(d.Key + " " + d.Count().ToString());
}
Run Code Online (Sandbox Code Playgroud)

现在,它可以正常运行。谢谢大家!

mm8*_*mm8 5

将实际组而不是密钥存储在中duplicates

var duplicates = answerData
            .GroupBy(i => i)
            .Where(g => g.Count() > 1);
Run Code Online (Sandbox Code Playgroud)

然后,您可以遍历各组:

foreach (var d in duplicates)
{           
    MessageBox.Show(d.Key + " " + d.Count().ToString());
}
Run Code Online (Sandbox Code Playgroud)

本示例对每个组进行两次计数(即迭代)。或者,您可以存储同时包含@HimBromBeere建议的Key和的对象Count