2009-05-05 11 views
21

वहाँ कई भाव से छँटाई के लिए एफ # में किसी भी समारोह LINQ धाराप्रवाह वाक्य रचना के समान हैएफ में OrderBy ThenBy #

myList 
|> Seq.sort_by(fun x->x.Something) 
|> Seq.then_by(fun x->x.SomethingElse) 

Thx

उत्तर

40

अपने तरह कुंजी के रूप में एक टपल का उपयोग करें:

myList |> Seq.sortBy (fun x -> x.Something, x.SomethingElse) 
+1

ठीक है, lexicographical क्रम में tuples तरह है, तो आदेश में एक टपल में बाएँ-से-सही में कई चाबियाँ डाल करता है सिर्फ तुम क्या वांछित है । – Brian

+0

@ टाइम-रॉबिन्सन क्या आप जानते हैं कि इस प्रकार के प्रकार को कुंजी में प्रत्येक आइटम के लिए अल्फानम/प्राकृतिक प्रकार के साथ कैसे किया जाएगा? – Erick

+0

@Erick मैं हाथ से IComparable लागू करना होगा, या तो Seq.sortBy (मेरे कस्टम IComparable कार्यान्वयन में सॉर्ट कुंजी लपेटना) कॉल, या System.Linq.Enumerable.OrderBy (और पैरामीटर के रूप में मेरे IComparable पास) कॉल करें। –

1

आपको यहां कुछ प्रकार के एल्गोरिदम उपयोगी मिल सकते हैं, क्योंकि मुझे .NET कार्यक्षमता का उपयोग करने के अलावा, सॉर्ट करने के लिए F # में प्रतीक्षा की जानकारी नहीं है।

http://cs.hubfs.net/forums/thread/3876.aspx