में जोड़े गए कई ऑर्डरब स्टेटमेंट के साथ लिंक क्वेरी मेरे पास एक webservice में एक विधि है जिसमें पैरामीटर है जिसके साथ उपयोगकर्ता यह तय कर सकते हैं कि वे अपने परिणामों को कैसे ऑर्डर करना चाहते हैं। यह List(Of String)
है जो फ़ील्ड के नामों के क्रम में क्रमबद्ध करना चाहते हैं।एक लूप
मैं जानता हूँ कि मैं सामान्य रूप से इस मामले में निम्नलिखित
Dim test = Bars.OrderBy(Function(x) x.Foo) _
.ThenBy(Function(x) x.Bar) _
.ThenBy(Function(x) x.Test)
कर हालांकि द्वारा एकाधिक स्तंभों पर आदेश इस काम नहीं करेगा कर सकते हैं के बाद से मैं नहीं श्रृंखला ThenBy
समारोह क्योंकि मैं छँटाई आदेश जोड़ रहा कर सकते हैं एक पाश में ThenBy
का उपयोग करने के लिए मुझे IOrderedQueryable
संग्रह की आवश्यकता है। यह मैं इसे कैसे काम करने के लिए
Dim sortColumns = {"Foo", "Bar", "Test"}
Dim query = From b in Bars
For each column in sortColumns
Select Case column
Case "Foo"
query = query.Orderby(Function(x) x.Foo)
Case "Bar"
query = query.Orderby(Function(x) x.Bar)
Case "Test"
query = query.Orderby(Function(x) x.Test)
End Select
Next
Dim result = query.Select(Function(x) x.x).ToList()
Return result
निश्चित रूप से यह काम नहीं करेगा क्योंकि OrderBy
किसी भी पिछले आदेश का स्थान ले लेगा नहीं देखना चाहेंगे। एकमात्र समाधान जिसे मैं सोच सकता हूं, पहले किसी अन्य चर पर सूची का ऑर्डर कर रहा है, इसलिए मेरे पास पहले से ही IOrderedQueryable
संग्रह है लेकिन यह गलत दृष्टिकोण की तरह लगता है।
Dim bars As New List(Of Bar)
Dim sortColumns = {"Foo", "Bar", "Test"}
Dim query = bars.Select(Function(x) New With {.Temp = 1, .x = x}) _
.OrderBy(Function(x) x.Temp)
For Each column In sortColumns
Select Case column
Case "Foo"
query = query.ThenBy(Function(x) x.x.Foo)
Case "Bar"
query = query.ThenBy(Function(x) x.x.Bar)
Case "Test"
query = query.ThenBy(Function(x) x.x.Test)
End Select
Next
Dim result = query.Select(Function(x) x.x).ToList()
Return result
"OrderBy किसी भी पिछले आदेश का स्थान ले लेगा"। झूठ। ऑर्डरबी पहले ऑर्डरिंग को संरक्षित करता है ... अर्थ: यह एक स्थिर पुन: ऑर्डरिंग है। इसका भी अर्थ है: वर्तमान क्रम में संबंधों को तोड़ने के लिए यह पूर्व आदेश का उपयोग करता है। तो: ऑर्डरबी (फू)। फिरबी (बार)। फिरबी (टेस्ट) ऑर्डरबी (टेस्ट) के समान है। ऑर्डर बी (बार)। ऑर्डरबी (फू) –