Ускорить сравнение двух List<> - C#
Формулировка задачи:
Нужно сравнить два листа, если объекта из первого листа нет во втором, то нужно добавить его в третий.
Сейчас у меня сделано так:
Класс
И собственно сравнение
При размерах около 30000 объектов в каждом листе обработка занимает около 70с, а если предварительно их отсортировать, то вообще 130с Или может я иду совсем не тем путем?..
Листинг программы
- 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;
- }
Решение задачи: «Ускорить сравнение двух List<>»
textual
Листинг программы
- return allItems.Except<Item>(oldItems).ToList<Item>();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д