Самый быстрый способ объединить два списка без дубликатов
Продолжение этой темы Ошибка при чтении большого файла в память
Есть 2 файла. Размером по 10гиг. Длина строк одинаковая. 10 символов. Стоит задача - объединить и удалить дубли. Подскажите самый производительный способ?
IEnumerable<string> l1 = File.ReadAllLines(textBox1.Text);
IEnumerable<string> l2 = File.ReadAllLines(textBox2.Text);
l1.Concat(l2);
var l3 = l1.Distinct().ToList();
Решение в лоб работает, но очень медленно
Ответы (1 шт):
Автор решения: tym32167
→ Ссылка
Самый быстрый - использовать HashSet
var ret = new HashSet<string>();
foreach(var line in File.ReadAllLines(textBox1.Text)) ret.Add(line);
foreach(var line in File.ReadAllLines(textBox2.Text)) ret.Add(line);
Или если файлы сильно большие не не лезут в память
var ret = new HashSet<string>();
foreach(var line in File.ReadLines(textBox1.Text)) ret.Add(line);
foreach(var line in File.ReadLines(textBox2.Text)) ret.Add(line);