Ускорить сравнение двух 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>();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д