आपको कई कॉल के बजाय निश्चित रूप से उपयोग करना चाहिए ।ThenByOrderBy
मैं यह सुझाव दूंगा:
tmp = invoices.InvoiceCollection
.OrderBy(o => o.InvoiceOwner.LastName)
.ThenBy(o => o.InvoiceOwner.FirstName)
.ThenBy(o => o.InvoiceID);
ध्यान दें कि आप हर बार एक ही नाम का उपयोग कैसे कर सकते हैं। यह भी इसके बराबर है:
tmp = from o in invoices.InvoiceCollection
orderby o.InvoiceOwner.LastName,
o.InvoiceOwner.FirstName,
o.InvoiceID
select o;
यदि आप OrderByकई बार कॉल करते हैं, तो यह प्रभावी रूप से अनुक्रम को पूरी तरह से तीन बार पुन: व्यवस्थित करेगा ... इसलिए अंतिम कॉल प्रभावी रूप से प्रभावी होगी। आप कर सकते हैं (LINQ में वस्तुओं के लिए) लिखने
foo.OrderBy(x).OrderBy(y).OrderBy(z)
जो के बराबर होगा
foo.OrderBy(z).ThenBy(y).ThenBy(x)
के रूप में क्रम स्थिर है, लेकिन आप बिल्कुल नहीं होना चाहिए:
- पढ़ना मुश्किल है
- यह अच्छा प्रदर्शन नहीं करता है (क्योंकि यह पूरे अनुक्रम को फिर से व्यवस्थित करता है)
- यह अन्य प्रदाताओं में अच्छी तरह से काम नहीं कर सकता है (जैसे LINQ to SQL)
- यह मूल रूप
OrderByसे उपयोग करने के लिए डिज़ाइन नहीं किया गया था।
के बिंदु OrderBy"सबसे महत्वपूर्ण" आदेश प्रक्षेपण प्रदान करने के लिए है, तब ThenByमाध्यमिक (टेरीटरी) ऑर्डर करने वाले अनुमानों को निर्दिष्ट करने के लिए (बार-बार) का उपयोग करें।
: प्रभावी ढंग से, इसे इस तरह लगता है कि OrderBy(...).ThenBy(...).ThenBy(...)तरह अनुक्रम आप किसी भी दो वस्तुओं के लिए एक एकल समग्र तुलना बनाने की अनुमति देता है, और फिर एक बार है कि समग्र तुलना का उपयोग कर। यह लगभग निश्चित रूप से आप क्या चाहते हैं।