के साथ सी # में क्रमबद्ध सूची मैं सी # में एक सूची क्रमबद्ध करना चाहता हूं।LINQ
जहां संरचना संपत्ति एवीसी सच हो जाती है तो उन्हें पहले दिखाएं तो एवीसी झूठी हो जाती है। सी # LINQ में ऐसा करने का कोई तरीका है?
के साथ सी # में क्रमबद्ध सूची मैं सी # में एक सूची क्रमबद्ध करना चाहता हूं।LINQ
जहां संरचना संपत्ति एवीसी सच हो जाती है तो उन्हें पहले दिखाएं तो एवीसी झूठी हो जाती है। सी # LINQ में ऐसा करने का कोई तरीका है?
खैर, सबसे आसान तरीका का उपयोग कर LINQ कुछ इस तरह होगा:
list = list.OrderBy(x => x.AVC ? 0 : 1)
.ToList();
या
list = list.OrderByDescending(x => x.AVC)
.ToList();
मेरा मानना है कि कि bool
मूल्यों की प्राकृतिक आदेश false < true
है, लेकिन प्रथम रूप यह स्पष्ट आईएमओ बनाता है, क्योंकि हर कोई जानता है कि 0 < 1
।
ध्यान दें कि यह मूल सूची को स्वयं क्रमबद्ध नहीं करेगा - यह एक नई सूची बनाएगा, और संदर्भ को list
चर पर वापस असाइन करेगा। यदि आप जगह में सॉर्ट करना चाहते हैं, तो आपको List<T>.Sort
विधि का उपयोग करना चाहिए।
इस तरह?
LINQ में:
var sortedList = originalList.OrderBy(foo => !foo.AVC)
.ToList();
या-जगह में:
originalList.Sort((foo1, foo2) => foo2.AVC.CompareTo(foo1.AVC));
जॉन स्कीट कहते हैं, चाल यहाँ जानना है कि false
true.
यदि आपको लगता है कि आप अपने कोड में कई अलग-अलग स्थानों में इन ऑर्डरिंग ऑपरेशन कर रहे हैं, तो आप अपने टाइप Foo
को आईपी में प्राप्त करना चाहेंगे IComparable<Foo>
और IComparable
इंटरफेस को लीमेंट करें।
मुझे लगता है कि आप उन्हें किसी अन्य चीज द्वारा क्रमबद्ध करना चाहते हैं, जहां सभी वस्तुओं के बीच एक सतत क्रम प्राप्त करने के लिए जहां एवीसी समान है। उदाहरण के लिए नाम:
var sortedList = list.OrderBy(x => c.AVC).ThenBy(x => x.Name).ToList();
Is.ToList() यहां आवश्यक है? –
@ कृष्णापीएस: हां, 'सूची' का संकलन-समय प्रकार मानना 'सूची 'है। अन्यथा आप एक 'IENumerable ' 'LIST ' चर को असाइन करने का प्रयास करेंगे। आपको इसकी आवश्यकता नहीं है अगर आपको केवल एक अनुक्रम की आवश्यकता है जिसे हर बार जब आप इसे फिर से शुरू करते हैं तो आलसी मूल्यांकन किया जाएगा। –
। धन्यवाद! तो एक सूची लौटने का आदेश जो आलसी मूल्यांकन किया गया है? क्या मुझसे कोई चूक हो रही है? क्षमा करें कि मैं उलझन में हूँ? मुझे ऐसी स्थिति का सामना करना पड़ रहा है जहां मैंने सूची का आदेश दिया है और इसे उपरोक्त के रूप में आईनेमरेबल के रूप में वापस कर दिया है, हालांकि जब मैं मूल्य बदलने के लिए उस लौटाई गई सूची में प्रत्येक के लिए एक करता हूं, तो मुझे लगता है कि ऑर्डर बाधित है .. –