एक अजीब एक चाहते करने के लिए है।
आप किसी भी समारोह < TSource पारित कर सकते हैं, TKey > आप OrderBy में पसंद: -
names.OrderBy(x => x.FirstName.CompareTo(x.LastName) < 0
? x.FirstName
: x.LastName);
या अगर आपको लगता है इनलाइन त्रिगुट बदसूरत लग रहा है (या आप तरह सब कुछ खत्म हो पुन: उपयोग करने की आवश्यकता है जगह), आप अपने खुद IComparer लिख सकते हैं: -
http://msdn.microsoft.com/en-us/library/bb549422.aspx
class PersonFirstOrLastNameComparer : IComparer<Person>
{
public int Compare(Person x, Person y)
{
return GetKey(x).CompareTo(GetKey(y));
}
private String GetKey(Person person)
{
if (person.FirstName.CompareTo(person.LastName) < 0)
{
return person.FirstName;
}
else
{
return person.LastName;
}
}
}
और: -
names.OrderBy(x => x, new PersonFirstOrLastNameComparer());
सच हालांकि, मैं इसके खिलाफ सलाह देंगे। यदि आप मॉडल श्रेणी पर पहले दो गुणों से पहले सॉर्टिंग करते हैं, तो मुझे संदेह है कि आपकी मॉडल क्लास कार्य तक नहीं है।
मैं आपके विशिष्ट एप्लिकेशन के बारे में और जानने के बिना और अधिक नहीं कह सकता, लेकिन शायद मैं मॉडल वर्ग के अंदर उस तर्क को समाहित करने की सलाह दूंगा (या तो एक विशिष्ट संपत्ति जैसे व्यक्ति.SortKey या यदि यह एक सार्वभौमिक प्रकार है तुलना करने के लिए ओवरराइड करना) या एक दृश्य मॉडल बनाना। मेरे द्वारा पोस्ट किए गए कोड स्निपेट कोड समीक्षा में एक भौं-राइज़र का थोड़ा सा होगा। मुझे लगता है कि मॉडल (या व्यूमोडेल) के साथ तर्क रखना इस उद्देश्य को स्पष्ट करेगा।
स्रोत
2010-12-08 17:30:11
एक संपत्ति द्वारा क्रमबद्ध करने से अलग "एक ही समय में एकाधिक गुण" द्वारा क्रमबद्ध कैसे किया जाता है और फिर किसी अन्य द्वारा? – LBushkin
यह मुझे लगता है जैसे ओपी दो गुणों के शुरुआती-क्रमबद्ध मूल्य से सॉर्ट करना चाहता है। – cdhowie
आप 'एडम जोन्स' और 'जोन्स एडम' को कैसे क्रमबद्ध करते हैं? किस क्रम में? –