2011-03-17 5 views
329

मुझे यकीन है कि यह अपेक्षाकृत सरल होगा।LINQ ऑर्डरबी Descending Query

मेरे पास एक LINQ क्वेरी है जिसे मैं हाल ही में बनाई गई तारीख से ऑर्डर करना चाहता हूं।

देखें:

 var itemList = from t in ctn.Items 
         where !t.Items && t.DeliverySelection 
         orderby t.Delivery.SubmissionDate descending 
         select t; 

मैं भी कोशिश की है:

 var itemList = (from t in ctn.Items 
         where !t.Items && t.DeliverySelection 
         select t).OrderByDescending(); 

लेकिन यह एक त्रुटि देता है:

विधि के लिए 'OrderByDescending' नहीं अधिभार 0 तर्क

लेता है

जो मैंने पढ़ा है, उससे मुझे पूरा यकीन है कि मैंने जिस तरह से किया है, उसे काम करना चाहिए। मैंने यह देखने के लिए उतरने के लिए अवरोही को बदलने की कोशिश की है कि यह कुछ भी करता है लेकिन यह वही रहता है।

अगर कोई प्रश्न पूछता है और देख सकता है कि मैं कुछ गलत कर रहा हूं तो मैं आभारी रहूंगा। धन्यवाद :)

उत्तर

511

आप द्वारा सॉर्ट और करने के लिए एक लैम्ब्डा अभिव्यक्ति के रूप में इसे पारित करने के लिए एक संपत्ति चुनने की आवश्यकता OrderByDescending

की तरह:

.OrderByDescending(x => x.Delivery.SubmissionDate); 

वास्तव में, हालांकि आपके LINQ का पहला संस्करण बयान काम करना चाहिए। t.Delivery.SubmissionDate वास्तव में वैध तिथियों के साथ आबादी है?

+0

हाय ऑप्टस, आपके उत्तर के लिए धन्यवाद। मैंने पता लगाया कि समस्या क्या थी। मैं एक पेजिनेटेडलिस्ट का उपयोग कर रहा था, और यह वास्तव में उस सहायक वर्ग से आदेश कर रहा था। समय सीमा समाप्त होने के बाद मैं आपके उत्तर को सही के रूप में चिह्नित करूंगा :) – 109221793

23

मुझे लगता है कि दूसरा एक

var itemList = (from t in ctn.Items 
       where !t.Items && t.DeliverySelection 
       select t).OrderByDescending(c => c.Delivery.SubmissionDate); 
+0

डबल अवरोही? – Snowbear

+0

मुझे लगता है कि मैं उनके लिए उचित मानता हूं, मैंने पोस्ट किया था जब मैंने पोस्ट किया था (यानी दूसरी आखिरी ऑर्डरबाय लाइन में छोड़कर) और संभवतया उसने लैम्ब्डा ऑर्डरबैडसेकिंग के उपयोग को प्रदर्शित करने के लिए प्रतिलिपि बनाई और चिपकाया। – 109221793

+0

हाँ ... क्षमा करें। मैं एक प्रतिलिपि/पेस्ट त्रुटि नहीं थी। मैं इसे संपादित करूंगा। – Jonathan

122

मुझे लगता है कि यह पहली विफल रहा क्योंकि आप मूल्य जो रिक्त है आदेश दे रहे हैं होना चाहिए। यदि डिलीवरी एक विदेशी कुंजी संबंधित तालिका है तो आपको पहले इस तालिका को शामिल करना चाहिए, नीचे उदाहरण:

var itemList = from t in ctn.Items.Include(x=>x.Delivery) 
        where !t.Items && t.DeliverySelection 
        orderby t.Delivery.SubmissionDate descending 
        select t; 
+47

+1। मैं उन लोगों से नफरत करता हूं जो बिना किसी कारण बताते हैं। – jp2code

+0

में डेटालोड्सऑप्शन dlo = new DataLoadOptions() के बराबर शामिल है; dlo.LoadWith (i => i.Delivery); ctn.LoadOptions = dlo; – mrosiak