عملگرهای مرتب سازی OrderBy و OrderByDescending – آموزش LINQ

linq sorting operators orderby orderbydescending 11068 تصویر

عملگرهای مرتب‌سازی OrderBy و OrderByDescending

مرتب‌سازی به فرآیندی گفته می شود که در آن عناصر موجود در مجموعه به صورت صعودی یا نزولی قرار می گیرند. در جدول زیر می توانید عملگرهای مرتب‌سازی موجود در LINQ را مشاهده کنید.

عملگر

توضیحات

OrderByعناصر موجود در یک مجموعه را بر اساس فیلد مشخص شده به صورت صعودی مرتب می کند.
OrderByDescendingعناصر موجود در یک مجموعه را بر اساس فیلد مشخص شده به صورت نزولی مرتب می کند. فقط در سینتکس متد معتبر است.
ThenByفقط در سینتکس متد معتبر است. برای مشخص کردن لول های بعدی مرتب‌سازی به صورت صعودی استفاده می شود.
ThenByDescendingفقط در سینتکس متد معتبر است. برای مشخص کردن لول های بعدی مرتب‌سازی به صورت نزولی استفاده می شود.
Reverseفقط در سینتکس متد معتبر است. برای برعکس کردن ترتیب عناصر مجموعه استفاده می شود.

عملگر OrderBy در سینتکس کوئری

OrderBy عناصر یک مجموعه را به صورت صعودی مرتب می کند. برای نمونه در مثال زیر لیست دانش آموزان بر اساس نام و به صورت صعودی مرتب می شود:

نتیجه تولید شده توسط کوئری فوق به این صورت خواهد بود:

به منظور مرتب‌سازی به شکل نزولی می توانید مانند نمونه زیر از عملگر descending استفاده کنید:

عملگر OrderBy در سینتکس متد

در سینتکس متد این عملگر دو overload دارد که اولی یک delegate به عنوان ورودی می گیرد. بنابراین باید یک عبارت لامبدا برای مشخص کردن فیلد مورد نظر برای مرتب‌سازی بر اساس آن به متد ارسال کنید. overload دوم یک ورودی دیگر از نوع IComparer دارد که این امکان را به ما می دهد تا منطق خودمان را برای مقایسه عناصر استفاده کنیم.

در مثال زیر لیست دانش آموزان بر اساس نام و به صورت صعودی مرتب می شود:

برای مرتب‌سازی به شکل نزولی می توانید مانند نمونه زیر از متد OrderByDescending استفاده کنید:

مرتب‌سازی چندگانه

مرتب‌سازی چندگانه زمانی استفاده می شود که بخواهیم مجموعه مورد نظر را بر اساس بیش از یک فیلد مرتب کنیم. در این حالت ابتدا مجموعه بر اساس فیلد اول مرتب می شود و اگر عناصری بر اساس فیلد اول مقدار مشابه داشته باشند، بر اساس فیلد دوم مرتب می شوند.

در مثال فوق مجموعه دانش آموزان دو مورد با نام یکسان دارد (Ram). بنابراین مجموعه ابتدا بر اساس نام دانش آموزان مرتب شده و سپس بر اساس سن مرتب می شود. نتیجه به این صورت خواهد بود:

ثبت نظر
ریفریش کنید!
نظرات کاربران (۰ مورد)

هیچ نظری ثبت نشده است