Distinct() не удаляет одинаковые элементы

У меня есть следующий код который структурирует файлы и директории в директориях в виде дерева, но вот есть проблема, как мне получить новые файлы в какой-то из папок? Допустим, в папке N создадут файл X, то как мне при новом обходе всех директорий получить только новые файлы?

То, как я делаю дерево:

class Item
{
    public string Name { get; set; }
    public string Path { get; set; }
}
class FileItem : Item
{
    public string Directory { get; set; }
}
class DirectoryItem : Item
{
    public List<Item> Items { get; set; }

    public DirectoryItem()
    {
        Items = new List<Item>();
    }
}
class ItemProvider
{
    public List<Item> GetItems(string path)
    {
        var items = new List<Item>();

        var dirInfo = new DirectoryInfo(path);

        foreach (var directory in dirInfo.GetDirectories())
        {
            var item = new DirectoryItem
            {
                Name = directory.Name,
                Path = directory.FullName,
                Items = GetItems(directory.FullName)
            };

            items.Add(item);
        }

        foreach (var file in dirInfo.GetFiles())
        {
            var item = new FileItem
            {
                Name = file.Name,
                Path = file.FullName,
                Directory = file.Directory.FullName
            };

            items.Add(item);
        }

        return items;
    }

}

А вот моя попытка найти новые файлы. На первой итерации цикла по-идее элементов вообще не должно быть т.к old и current имеют идентичные элементы, однако я не получаю этого, а получаю полностью конкатенированную коллекцию (я знаю, что Distinct вроде смотрит на хешкод)

var current = provider.GetItems(path);
var old = new List<Item>();
while (true)
{
    old = current;
    current = provider.GetItems(path);
    var newItems = current.Concat(old).Distinct();
}

Ответы (0 шт):