লিনকিউ অর্ডারবাইয়ের উত্স অবলম্বন ক্যোয়ারী


439

আমি নিশ্চিত এটি তুলনামূলকভাবে সহজ হবে।

আমার কাছে একটি লিনকিউ ক্যোয়ারী রয়েছে যা আমি সর্বাধিক নির্মিত তারিখ অনুসারে অর্ডার করতে চাই।

দেখা:

        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();

তবে এটি একটি ত্রুটি দেয়:

পদ্ধতি 'অর্ডারবাইডেসেন্ডিং' এর জন্য কোনও ওভারলোড 0 টি আর্গুমেন্ট নেয় না

আমি যা পড়েছি তা থেকে আমি নিশ্চিত যে আমি এটি প্রথমভাবে কাজ করেছি। আমি আরোহণে আরোহণের পরিবর্তনের চেষ্টা করেছি কেবল এটি দেখার জন্য যে এটি কিছু করে তবে এটি একই থাকে।

কেউ যদি ক্যোয়ারীটি একবার দেখে নিতে পারে এবং আমি কোনও ভুল করছি কিনা তা দেখতে আমি কৃতজ্ঞ হব। ধন্যবাদ :)

উত্তর:


674

ল্যাম্বডা এক্সপ্রেশন হিসাবে এটি অনুসারে বাছাই করতে আপনাকে একটি সম্পত্তি চয়ন করতে হবে OrderByDescending

মত:

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

সত্যই, যদিও আপনার লিনকিউ বিবৃতিটির প্রথম সংস্করণটি কাজ করা উচিত। হয় t.Delivery.SubmissionDateআসলে বৈধ তারিখ দিয়ে জনবহুল?


2
হাই অপ্টস, আপনার জবাবের জন্য ধন্যবাদ। সমস্যাটি কী ছিল তা আমি বুঝতে পেরেছি। আমি একটি পৃষ্ঠাযুক্ত তালিকা ব্যবহার করছিলাম এবং এটি আসলে সেই সহায়ক শ্রেণীর কাছ থেকে অর্ডারিং করছিল। সময় সীমা শেষ হয়ে গেলে আমি আপনার উত্তরটিকে সঠিক হিসাবে চিহ্নিত করব :)
109221793

175

আমি মনে করি এটি প্রথম ব্যর্থ হয়েছে কারণ আপনি মানটি অর্ডার করছেন যা শূন্য। যদি সরবরাহ কোনও বিদেশী কী সম্পর্কিত টেবিল হয় তবে আপনার প্রথমে এই টেবিলটি অন্তর্ভুক্ত করা উচিত, উদাহরণস্বরূপ নীচে:

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

অন্তর্ভুক্ত হ'ল ডেটালয়েডপশনস ড্লোও = নতুন ডেটালয়ডপশনস () এর সমতুল্য; dlo.LoadWith <আইটেমগুলি> (i => আই ডেলিভারি); ctn.LoadOptions = dlo;
mrosiak

29

আমার মনে হয় দ্বিতীয়টি হওয়া উচিত

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

আমি তার কাছে ন্যায্য বলে মনে করি, পোস্ট করার সময় আমি কোয়েরিটি ভুল টাইপ করেছিলাম (অর্থাত্ দ্বিতীয় শেষ অর্ডারবাই লাইনে রেখে যাচ্ছি) এবং তিনি সম্ভবত ল্যাম্বডা অর্ডারবাইডেসেন্ডিংয়ের ব্যবহার প্রদর্শনের জন্য অনুলিপি করে কপি করেছেন।
109221793

6

এটি অন্য কোনও ফর্ম্যাটে দেখানোর জন্য যা আমি কোনও কারণে ব্যবহার করতে পছন্দ করি: প্রথম উপায়টি আপনার আইটেমলিস্টটিকে সিস্টেম হিসাবে ফিরিয়ে দেয় in

using(var context = new ItemEntities())
{
    var itemList = context.Items.Where(x => !x.Items && x.DeliverySelection)
                                .OrderByDescending(x => x.Delivery.SubmissionDate);
}

এই পদ্ধতিটি ঠিক আছে তবে আপনি যদি এটি সরাসরি তালিকার অবজেক্টে চান:

var itemList = context.Items.Where(x => !x.Items && x.DeliverySelection)
                                .OrderByDescending(x => x.Delivery.SubmissionDate).ToList();

আপনাকে যা করতে হবে তা হল কোয়েরির শেষে একটি .ToList () কল যুক্ত করতে হবে।

কিছু লক্ষণীয়, আমার মাথার উপরের অংশটি আমি কোথায় স্মরণ করতে পারছি না!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.