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

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

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

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

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

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

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


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

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

8   голосов , оценка 4.25 из 5
Похожие ответы