Самый быстрый способ объединить два списка без дубликатов

Продолжение этой темы Ошибка при чтении большого файла в память

Есть 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);
→ Ссылка