عملگرهای مرتب سازی در Linq بخش پنجم

در مقاله قبل ، ۸ مثال از مبحث sorting در linq را بررسی کردیم . در این مقاله ۳ مثال دیگر در این رابطه خواهیم دید . که نحوه پیاده سازی چند orderby پشت سرهم را بررسی می کنیم . برای اعمال چند orderBy ، باید از دستور thenBy استفاده شود یعنی در اولین عبارت مانند قبل از orderBy استفاده میکنیم و از ordering دوم به بعد از دستور ThenBy استفاده میکنیم . به مثالهای زیر دقت کنید :

 

مثال نهم :

در این مثال میخواهیم لیست محصولات را ابتدا براساس حروف الفبای دسته بندی (category) محصول و سپس بر اساس قیمت و بصورت نزولی مرتب سازی انجام شود :

                              
public static void ThenByDescendingSimple()
{
    var products = new ProductRepository().GetAll();
    var sortedProducts =
                        from product in products
                        orderby product.Category, product.UnitPrice descending
                        select product;
    foreach (var product in sortedProducts)
    {
        Console.WriteLine("Name: {0}\tCategory: {1}\tUnit Price: {2}", product.ProductName, product.Category, product.UnitPrice);
    }
}

مثال دهم :

برای اعمال مرتب سازی نزولی برای thenby ها (ordering دوم به بعد) باید از عبارت thenbydescending استفاده کنیم :

                              
public static void ThenByDescendingComparer()
{
    string[] words = { "aPPLE", "AbAcUs", "bRaNcH", "BlUeBeRrY", "ClOvEr", "cHeRry" };
    var sortedWords =
                    words.OrderBy(word => word.Length)
                            .ThenByDescending(a => a, new CaseInsensitiveComparer());
    foreach (var word in sortedWords)
    {
        Console.WriteLine(word);
    }
}

دستور Reverse :

برای برعکس کردن نتایج بدست آمده از پرس و جوی Linq بکار میرود . بعنوان مثال اگر خروجی بصورت ۱و۴و۶ باشد با اعمال Reverse ، خروجی بصورت ۶و۴و۱ می شود . به مثال زیر دقت کنید :

مثال یازدهم :

به کد زیر دقت کنید :

                              
public static void Reverse()
{
    string[] digits = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" };
    var reversedIDigits = (
                            from digit in digits
                            where digit[1] == 'i'
                            select digit
                            ).Reverse();
    Console.WriteLine("A backwards list of the digits with a second character of 'i':\n———————————————-");
    foreach (var digit in reversedIDigits)
    {
        Console.WriteLine(digit);
    }
}

توضیح : در این مثال می خواهیم از آرایه digits ، عناصری که حرف دوم آنها i می باشد را برداریم و در نهایت آنها را Reverse کنیم . خروجی مثال فوق nine,eight,six می شود .

خب دوستان ، هم اکنون مقالات آموزشی در زمینه مرتب سازی و یا ordering یا sorting در LINQ به پایان میرسد .

برای کسب اطلاعات و آموزش بیشتر به وب سایت مایکروسافت مراجعه کنید .

در بخش بعدی وارد مبحث عملگرهای مجموعه ای در LINQ خواهیم شد .


تاریخ انتشار : ۲۹ اسفند ۱۳۹۴



دیدگاه ها :