Ускорить сравнение двух List<> - C#

Узнай цену своей работы

Формулировка задачи:

Нужно сравнить два листа, если объекта из первого листа нет во втором, то нужно добавить его в третий. Сейчас у меня сделано так: Класс
Листинг программы
  1. class Item : IEquatable<Item>, IComparable<Item>
  2. {
  3. public string Link { get; private set; }
  4. public string Name { get; private set; }
  5. public string Owner { get; private set; }
  6. public Item(string link, string owner)
  7. {
  8. Owner = owner;
  9. Link = link;
  10. string[] tmp = link.Split('/');
  11. Name = tmp[tmp.Length - 1];
  12. }
  13. public bool Equals(Item other)
  14. {
  15. return other != null && other.Link == this.Link;
  16. }
  17. public int CompareTo(Item other)
  18. {
  19. return string.Compare(this.Link, other.Link);
  20. }
  21. }
И собственно сравнение
Листинг программы
  1. class Program
  2. {
  3. static List<Item> allItems = new List<Item>();
  4. static List<Item> oldItems = new List<Item>();
  5. ...
  6. static List<Item> GetNewItems()
  7. {
  8. List<Item> newItems = new List<Item>();
  9. foreach (var item in allItems)
  10. {
  11. if (!oldItems.Contains(item))
  12. newItems.Add(item);
  13. }
  14. return newItems;
  15. }
При размерах около 30000 объектов в каждом листе обработка занимает около 70с, а если предварительно их отсортировать, то вообще 130с Или может я иду совсем не тем путем?..

Решение задачи: «Ускорить сравнение двух List<>»

textual
Листинг программы
  1. return allItems.Except<Item>(oldItems).ToList<Item>();

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.25 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы