मेरे पास एक क्वेरी है जो धीमी गति से चल रही है (लगभग 100 के लूप में इसमें 5-10 सेकंड लगते हैं) और कोई संकेत नहीं है। यह वस्तुओं की सूची के खिलाफ बस पूछताछ कर रहा है ... आपकी मदद बहुत सराहना की है!धीमी LINQ क्वेरी
मैं मूल रूप से उन अनुसूची के लिए पूछताछ कर रहा हूं जिन्हें विशिष्ट प्रबंधकों को सौंपा गया है। यह निर्दिष्ट शिफ्ट सप्ताह या अगले सप्ताह के पहले 2 दिन या पिछले सप्ताह के अंतिम 2 दिनों से होना चाहिए।
मैंने गणना करने की कोशिश की। पहले दिन। लेकिन इससे मदद नहीं मिली। जब मैंने प्रदर्शन परीक्षण चलाया तो उसने नीचे दिए गए "से" कथन को हाइलाइट किया।
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();
सबसे पहले, धन्यवाद जॉन! मैंने पहले इसे छोटा सर्किट किया था लेकिन कोई अंतर नहीं देखा। हालांकि "कहां" काम करने के बजाय "शामिल" का उपयोग करना! मुझे कभी नहीं पता था कि LINQ ने 2 अलग-अलग व्यवहार किया था। दूसरा - वाह! मुझे लगता है कि मुझे सिर्फ एक सेलिब्रिटी से मदद मिली है! :) मैंने कभी आपकी पुस्तक नहीं पढ़ी लेकिन इसे कई बार देखा है। आप सुनिश्चित कर सकते हैं कि मैं अब एक प्रतिलिपि उठाउंगा। :) पी। यदि आप कभी डेवलपर की तलाश में हैं तो मुझे बताएं! यानी आपकी अगली पुस्तक सह-लेखक बनने के लिए! haha – jon