【发布时间】:2017-05-26 12:31:50
【问题描述】:
我在 3000 名员工周围循环,每个员工在一个月的所有日期循环。
我已经从 Db 预加载了一个列表 ShiftDetails 以提高性能。
foreach (var item in lstEmp)
{
while (fDate <= ToDate)
{
var employeeShifts = ShiftDetails
.Where(a => a.EmployeeId == item.Id && a.ShiftDate == fDate)
.Select(a => a)
.FirstOrDefault();
}
}
当我使用 Profiler 检查性能时,上面的代码行占用了大量时间。
有什么方法可以提高代码的性能?
我已经搜索并发现字典最适合解决这个问题,但它们应该有唯一的键,在我的情况下,我在列表中没有任何唯一的列。
【问题讨论】:
-
您可以使用Parallel.Foreach 方法加快速度吗?
-
您多久增加一次
fDate变量?是DateTime对象还是某个时间戳?每毫秒迭代可能比 LINQ 到 3000 个对象更痛苦 -
它是 DateTime 对象,对于它迭代一个月的每个员工,例如4 月 1 日至 4 月 30 日。
标签: c# performance linq asp.net-mvc-4