【发布时间】:2018-11-15 02:11:54
【问题描述】:
所以我决定创建一个可以做很多事情的程序。作为该程序的一部分,有一个名为“文本工具”的部分,它获取一个文本文件(通过 1 个按钮),然后具有执行其他功能的附加按钮,例如从文件中删除空格和空行、删除重复项和删除匹配的行某种模式,例如 123 或 abc。
我能够导入文件并使用 foreach 循环打印列表,我相信我的思路是正确的,但是我需要删除重复项。我决定使用 HashSet 多亏了这个线程,它说它是最简单和最快的方法(我的文件将包含数百万行)。
问题是我无法弄清楚我做错了什么,我有按钮单击的事件处理程序,在内存中创建了一个字符串列表,循环遍历文件中的每一行(添加它到列表中)然后创建另一个列表并将其设置为列表的 HashSet。 (对不起,如果这很复杂,它不起作用是有原因的)。
我查看了与此类似的每个 stackoverflow 问题,但找不到任何解决方案。我也调查过 HashSet 也无济于事。
到目前为止,这是我的代码:
private void btnClearDuplicates_Copy_Click(object sender, RoutedEventArgs e)
{
List<string> list = new List<string>();
foreach (string line in File.ReadLines(FilePath, Encoding.UTF8))
{
list.Add(line);
}
var DuplicatesRemoved = new HashSet<String>(list);
}
【问题讨论】:
-
无法从 'System.Collections.Generic.List
' 转换为 'System.Collections.Generic.IEqualityComparer ' -
Respectfully I didn't open the question to ask for links that I've already found如果你要狡猾,至少提供你已经阅读的链接。我们不是读心术的人。 :) -
我建议完全停止使用
List<string>,然后使用HashSet<string>。您不需要List。请注意,理论上HashSet可以以与文件中不同的顺序返回数据(当前实现不会,但将来可以)。
标签: c#