Member 11266633 Ответов: 1

Как ускорить работу сравнения в списках< T>?


У меня есть два класса Helper и FileDB. У меня есть создать два списка< t>

List<FileDB> listFileDB = new List<FileDB>();
List<Helper> listHelper = new List<Helper>();


class Helper
    {
        public string Articule { get; set; }
        public List<Date> Dates { get; set; } = new List<Date>();
    }
    class Date
    {
        public DateTime Data { get; set; }
        public string Cnt { get; set; }
    }

////////////

class FileDB
   {
    public string Articule { get; set; }
    public string Naim { get; set; }
    public string Cnt { get; set; }
   }

У меня есть алго, который сравнивает эти списки. Все работают, но моя операция, если сравнивать, работает очень медленно. Не понимаю почему. У меня есть только 50 тысяч данных в обоих списках.

for (int i = 0; i < listHelper.Count; i++) {
  bool flag = false;
  for (int j = 0; j < listFileDB.Count; j++) {
   if (listHelper[i].Articule == listFileDB[j].Articule) {
    flag = true;
    Date date = new Date();
    date.Data = Convert.ToDateTime(Path.GetFileNameWithoutExtension(file));
    date.Cnt = listFileDB[j].Cnt;
    listHelper[i].Dates.Add(date);
   }
  }
  if (flag == false) {
   Date date = new Date();
   date.Data = Convert.ToDateTime(Path.GetFileNameWithoutExtension(file));
   date.Cnt = "0";
   listHelper[i].Dates.Add(date);
  }
 }


Что я уже пробовал:

Я пытаюсь использовать свой algo, но его скорость очень медленная

TABiSH777

Вы можете использовать LINQ здесь. Существуют операторы (Intersect / Except), которые вы можете использовать для сравнения обоих ваших списков без использования цикла For.

Patrice T

Дайте подробности:
Что находится в этом списке? разобрались или нет? размер? приведите пример.
Что за сравнение вы делаете? Какой результат вы хотите?

Graeme_Grant

МММ ... занятия есть...

1 Ответов

Рейтинг:
2

Graeme_Grant

Позвоните в Sort() затем легко пройти по списку, сравнивая последний с текущим, чтобы увидеть повторяющиеся элементы.