2009-11-16 11 views
18

मैंने इस साइट की एक संक्षिप्त खोज की है, और इसे गुगल किया है, लेकिन एक अच्छा उदाहरण नहीं लग रहा है। मैं अभी भी पूरे "लैम्ब्डा अभिव्यक्तियों" चीज़ के आसपास अपना सिर लेने की कोशिश कर रहा हूं।वीबी.Net lambda अभिव्यक्तियों का उपयोग करके एकाधिक कॉलम द्वारा ऑर्डर कैसे करें

क्या कोई यहां मुझे लैम्बडा अभिव्यक्ति का उपयोग करके VB.Net और Linq-to-SQL का उपयोग करके एकाधिक कॉलम द्वारा ऑर्डर करने का उदाहरण दे सकता है?

Return _dbContext.WebCategories.OrderBy(Function(c As WebCategory) c.DisplayOrder).ToList 

नोट::

यहाँ मेरी मौजूदा कोड है, जो परिणाम ऑर्डर करने के लिए एक एकल-स्तंभ का उपयोग कर एक आदेश दिया सूची लौटाती है WebCategory वस्तु एक बच्चे वेबपेज वस्तु (एक विदेशी कुंजी के आधार पर) है। मैं WebPage.DisplayOrder द्वारा ऑर्डर करना चाहता हूं, फिर WebCategory.DisplayOrder द्वारा।

मैंने ऑर्डर बाईज़ को चेन करने की कोशिश की, जैसे कि नीचे, और हालांकि यह संकलित और भाग गया, यह मेरे इच्छित क्रम में डेटा वापस नहीं प्रतीत होता।

Return _dbContext.WebCategories.OrderBy(Function(c As WebCategory) c.DisplayOrder).OrderBy(Function(c As WebCategory) c.WebPage.DisplayOrder).ToList 

अग्रिम धन्यवाद।

उत्तर

39

मुझे एक त्वरित Google खोज में this MSDN article मिला। मुझे लगता है कि आपके की तलाश में यह है:

Return _dbContext.WebCategories.OrderBy(Function(c As WebCategory) c.DisplayOrder). _ 
ThenBy(Function(c As WebCategory) c.WebPage.DisplayOrder).ToList 
+0

धन्यवाद, कि मैं के लिए उपयोगी था। यदि आप पूछ सकते हैं तो Google खोज शब्द क्या थे जिन्हें आपने उस लेख को ढूंढने के लिए उपयोग किया था? – camainc

+1

वाह, मैं कर रहा था (जो मैंने सोचा था) ठीक है और यह काम नहीं करेगा, मुझे कुछ प्रकार का लिंक-संबंधित अपवाद मिल रहा था ... अविश्वसनीय रूप से निराश हो रहा था ... तो मैंने देखा कि मैं आखिरी भूल गया था। " अंश। मुझे पता है कि यह पूर्वदर्शी में स्पष्ट है कि इसे सही डेटा प्रकार होना चाहिए, लेकिन मुझे लगता है कि मुझे उन "पेड़ों के लिए जंगल" क्षणों में से एक था। जानकारी के लिए धन्यवाद! – evilspoons

12

आप इस तरह ThenBy उपयोग करना चाहिए:

Return _dbContext.WebCategories.OrderBy(Function(c As WebCategory) c.DisplayOrder) _ 
           .ThenBy(Function(c As WebCategory) c.WebPage.DisplayOrder) _ 
           .ToList() 
+1

धन्यवाद! आपने हूबेज़ा के साथ ही इसका उत्तर दिया, लेकिन चूंकि आपके पास पहले से ही अधिक बैज हैं, इसलिए मैंने उन्हें जवाब दिया। – camainc

+0

बीटीडब्ल्यू: यदि आपको अपने स्वयं के आईसीओएमपेयर की ज़रूरत है, तो आपको इसे दो बार उपयोग करना होगा (एक बार ओडरबी के लिए और एक बार .henBy कमांड के लिए)। बस ', नया MyOwnIComparer' जोड़ें और निश्चित रूप से MyOwnIComparer नाम के साथ अपनी कक्षा के लिए अपना कोड जोड़ें – PeterCo

संबंधित मुद्दे