আপনার অবশ্যইThenBy একাধিক OrderByকলের পরিবর্তে ব্যবহার করা উচিত ।
আমি এটি প্রস্তাব করব:
tmp = invoices.InvoiceCollection
.OrderBy(o => o.InvoiceOwner.LastName)
.ThenBy(o => o.InvoiceOwner.FirstName)
.ThenBy(o => o.InvoiceID);
আপনি কীভাবে প্রতিবার একই নাম ব্যবহার করতে পারেন তা নোট করুন। এটিও সমান:
tmp = from o in invoices.InvoiceCollection
orderby o.InvoiceOwner.LastName,
o.InvoiceOwner.FirstName,
o.InvoiceID
select o;
আপনি যদি OrderByএকাধিকবার কল করেন তবে এটি কার্যকরভাবে ক্রমটি পুরোপুরি তিনবার পুনঃক্রম করতে হবে ... সুতরাং চূড়ান্ত কল কার্যকরভাবে প্রভাবশালী হবে। আপনি যা করতে পারেন (LINQ মধ্যে বস্তু) লেখ
foo.OrderBy(x).OrderBy(y).OrderBy(z)
যা সমান হবে
foo.OrderBy(z).ThenBy(y).ThenBy(x)
ক্রম ক্রম স্থিতিশীল হিসাবে, কিন্তু আপনার একেবারে উচিত নয়:
- এটা পড়া কঠিন
- এটি ভাল সম্পাদন করে না (কারণ এটি পুরো ক্রমটি পুনরায় সাজিয়ে তোলে)
- এটি অন্য সরবরাহকারীগুলিতে ভাল না কাজ করতে পারে (উদাঃ লিংক থেকে এসকিউএল)
- এটি মূলত কীভাবে ব্যবহারের
OrderByজন্য ডিজাইন করা হয়েছিল তা নয় ।
বিন্দুটি OrderByহল "সর্বাধিক গুরুত্বপূর্ণ" অর্ডার প্রজেকশন সরবরাহ করা; তারপরে ThenBy(বারবার) মাধ্যমিক, তৃতীয় ইত্যাদি নির্দিষ্টকরণের জন্য অনুমানগুলি অর্ডার করুন।
কার্যকরভাবে, এটি এইভাবে চিন্তা করুন: OrderBy(...).ThenBy(...).ThenBy(...)আপনাকে যে কোনও দুটি বস্তুর জন্য একটি একক যৌগিক তুলনা তৈরি করতে দেয় এবং তারপরে সেই সংমিশ্রিত তুলনাটি একবার ব্যবহার করে ক্রমটি বাছাই করে । এটি প্রায় অবশ্যই আপনি চান।