У меня большой запрос к базе данных, который возвращает около 100k
записей в список в памяти.Мне нужно связать список связанных сотрудников с каждой записью (также около 100k
записей), но я изо всех сил пытаюсь получить полезную производительность.
foreach (var detail in reportData.Details)
{
detail.Employees = employees
.Where(x => x.AccountingDocumentItemId == detail.AccountingDocumentItemId)
.Select(x => x.Employee)
.ToList();
detail.Employee = String.Join(", ", detail.Employees);
}
Приведенный выше код занимает 8 минут для завершения.Я сузил проблему скорости до первой строки в for loop
, где он находит соответствующих сотрудников.Если я опускаю ToList()
, это супер быстро, но следующая строка немедленно вызывает проблемы, при которых String.Join
вызывает выполнение Where.
Я, очевидно, подхожу к этому под неправильным углом, ноЯ исчерпал варианты, я думаю, будет работать.