c# - 计算列表中的重复项并将它们保存在不同的文件中(或列表/数组/字符串)
问题描述
我需要计算 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]
解决方案
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());
}
推荐阅读
- javascript - 替代 Angular 模板中的函数
- sql - 从 3 个不同的表中查询
- powershell - PS 脚本在第一个 else 语句后停止
- reactjs - 在导致 404 的路由内部刷新
- css - 如何创建网格项目的 1 和一半宽度
- javascript - 如何使用 jQuery Validate 模式规则仅允许不在不区分大小写列表中的单词
- media-source - 媒体源扩展 appendBuffer 恢复
- kubernetes - kubernetes nginx 入口请求标头或 Cookie 太大
- html - CSS 反向悬停动画
- c# - 在 MVVM 中初始化 DbContext 的位置