Ускорить сравнение двух 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>();