我有一个大型数据库查询,该查询将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
导致执行位置的问题。
我显然是从错误的角度来解决这个问题,但是我已经用尽了我认为可行的选择。