Медленный запрос LINQ

У меня есть запрос, который выполняется медленно (в цикле из 100 требуется 5-10 секунд), и я не знаю почему. Это просто запрос к Списку объектов ... Ваша помощь очень ценится!

Я в основном запрашиваю расписания, которые были назначены конкретным менеджерам. Это должно быть из указанной Сменной недели ИЛИ первых 2 дней следующей недели ИЛИ последних 2 дней предыдущей недели.

Я попытался вычислить. AddDays раньше, но это не помогло. Когда я запускал тест производительности, он выделил оператор «from» ниже.

List<Schedule> _schedule = Schedule.GetAll();
List<Shift> _shifts = Shift.GetAll();

// Then later...
List<Schedule> filteredSchedule = (from sch in _schedule 
                                    from s in _shifts
                                    where
                                        **sch.ShiftID == s.ShiftID
                                        & (sch.ManagerID == 1 | sch.ManagerID == 2 | sch.ManagerID == 3)
                                        & ((s.ScheduleWeek == shift.ScheduleWeek)
                                                | (s.ScheduleWeek == shift.ScheduleWeek.AddDays(7)
                                                        & (s.DayOfWeek == 1 | s.Code == 2))
                                                | (sch.ScheduleWeek == shift.ScheduleWeek.AddDays(-7)
                                                        & (s.DayOfWeek == 5 | s.Code == 6)))**
                                    select sch)
                                    .OrderBy(sch => sch.ScheduleWeek)
                                    .ThenBy(sch => sch.DayOfWeek)
                                    .ToList();
6
задан jon 18 January 2011 в 22:25
поделиться