events.OrderBy(x => x.DateTimeStart)
: एक प्रश्न है कि संपत्ति DateTimeStart द्वारा घटनाओं क्रमबद्ध करता घोषित। क्वेरी अभी तक नहीं की गई है।
events.OrderBy(x => x.DateTimeStart).ToList();
: पिछली क्वेरी को संसाधित करें। सभी घटनाओं के माध्यम से Iterate, उनके डेटटाइमस्टार्ट की जांच करता है, उन्हें सूची के रूप में क्रमबद्ध करें और परिणाम ... परिणाम को छोड़ दें! क्योंकि आपने इसे सुरक्षित नहीं किया है। ऐसा ही कुछ के साथ तुलना करें:
int a = 0;
a + 1;
b = a; // b is 0
return events.AsQueryable();
: यहाँ आप अपने मूल घटनाओं बजाय क्रमबद्ध के लिए लौट रहे हैं।
आप इस प्रकार अपने कोड लिखना चाहिए:
return events.OrderBy(x => x.DateTimeStart).ToList().AsQueryable();
कि संस्करण क्रमबद्ध घटनाओं के स्थिर सूची प्रदान करेगी। यदि अब आप ईवेंट सूची बदलते हैं, तो परिणाम आपके परिवर्तनों को ध्यान में रखेगा।
दूसरा समाधान है:
return events.OrderBy(x => x.DateTimeStart).AsQueryable();
कि संस्करण कोई काम नहीं करेंगे। यह सिर्फ घटनाओं को सॉर्ट करने का तरीका बताता है और IQueryable के रूप में उस तरीके को लौटाता है। यदि आप भविष्य में कोड में लौटाए गए मान का उपयोग करते हैं तो इसमें हमेशा सभी सॉर्ट किए गए ईवेंट होंगे, भले ही आप इसका उपयोग करने से पहले नए जोड़ दें।
स्रोत
2013-02-22 08:33:53
याद रखें कि 'AsQueryable() 'और' ToList() 'अंतर्निहित डेटास्ट्रक्चर के आधार पर काफी अलग चीजें हैं। – flindeberg