Истекло время ожидания функции для большого списка (запрос LINQ в C # )

Я использую следующий запрос

var queryList1Only = (from file in list1
                                  select file).Except(list2, myFileCompare);

, а myFileCompare выполняет сравнение 2 файлов на основе имени и длины.

Запрос был возвращая результаты, если list1 и list2 были маленькими (скажем, 100 файлов, пока я тестировал), я увеличил list1 до 30 000 файлов и list2 до 20 000 файлов, и теперь запрос говорит «Превышено время ожидания оценки функции» .

Я поискал в Интернете и обнаружил, что это может быть отладка, поэтому я удалил все точки останова и запустил код, теперь программа просто зависла, без вывода для queryList1Only Я пытаюсь распечатать, чтобы проверить .

РЕДАКТИРОВАТЬ: Это код для myFileCompare

class FileCompare : System.Collections.Generic.IEqualityComparer<System.IO.FileInfo>
    {

        public FileCompare() { }

        public bool Equals(System.IO.FileInfo f1, System.IO.FileInfo f2)
        {
            return (f1.Name == f2.Name && f1.Directory.Name == f2.Directory.Name && 
                    f1.Length == f2.Length);
        }

        // Return a hash that reflects the comparison criteria. According to the 
        // rules for IEqualityComparer<T>, if Equals is true, then the hash codes must
        // also be equal. Because equality as defined here is a simple value equality, not
        // reference identity, it is possible that two or more objects will produce the same
        // hash code.
        public int GetHashCode(System.IO.FileInfo fi)
        {
            string s = String.Format("{0}{1}", fi.Name, fi.Length);
            return s.GetHashCode();
        }

    }
6
задан sll 18 August 2011 в 22:03
поделиться