Как лучше оперировать большими объемами данных, используя C#?

Ситуация следующая: я получаю, предположим, около миллиона строк (возможно больше), которые записываю в List<MyClass> Followers.
Также у меня есть еще один список List<MyClass> Likes с таким же большим количеством элементов, около одного миллиона (возможно больше).
Далее мне нужно сделать Likes.Intersect(Followers).
Правильный ли я подход использую, храня это в обычных List<T>, или нужно делать это как-то иначе? И не нарвусь ли я на ограничение на объем List<T> в 2GB?
Каким образом можно сделать максимально быстрым фильтрацию (нахождения пересечения, INNER JOIN проще говоря) этих двух массивов данных?
  • Вопрос задан
  • 163 просмотра
Пригласить эксперта
Ответы на вопрос 3
GavriKos
@GavriKos
Используйте базу данных. Они как раз вот для этого.
А про нарветесь или нет - посчитать легко, зная размер MyClass средний.
Ответ написан
devspec
@devspec
Помогло? Отметь решением
List<T> не имеет ограничения по объему. Если у вас 32-битная система - то вы нарветесь на ограничения в 2 GB оперативки, если 64-битная - то будет забивать память под завязку. Подход неправильный, т.к. вы не знаете, сколько памяти у конечного юзера.

Правильно посоветовали насчет БД - это самый простой подход. Используйте SQLite, как самую простую переносимую БД.
Подход посложнее - сохранять записи в файлы, затем делать Intersect порционно, алгоритмически.
Ответ написан
Комментировать
AtomKrieg
@AtomKrieg
Давай я поищу в Google за тебя
Для больших объемов надо использовать hashset
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы