首页 > 解决方案 > 计算列表中的重复项并将它们保存在不同的文件中(或列表/数组/字符串)

问题描述

我需要计算 List 中的重复值并将它们保存在不同的文件中。文件名包含电子邮件提供商和编号或重复项。

该列表总是会发生变化并具有不同的值,但它可能看起来像这样:

List<string> email_domains = new List<string>()     
{
    "gmail.com",
    "gmail.com",
    "outlook.com",
    "outlook.com",
    "outlook.com",
    "outlook.com",
    "ineria.pl",
    "mail.ru"
}

我想要得到的结果是这样的:

gmail.com [2]
outlook.com[4]

标签: c#sortingemail

解决方案


var email_domains = new List<string>()
{
    "gmail.com",
    "gmail.com",
    "outlook.com",
    "outlook.com",
    "outlook.com",
    "outlook.com",
    "ineria.pl",
    "mail.ru"
};

var results = email_domains.GroupBy(x => x);
foreach (var domain in results)
{
    Console.WriteLine("{0} [{1}]", domain.Key, domain.Count());
}

而不是Console.WriteLine()您可以写入文件。

如果您只想要至少有一个重复项的项目,请添加一个附加条件:

foreach (var domain in email_domains.GroupBy(x => x).Where(x => x.Count() > 1))
{
    Console.WriteLine("{0} [{1}]", domain.Key, domain.Count());
}

推荐阅读