Как ускорить работу сравнения в списках< 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
МММ ... занятия есть...