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

عملگرهای مرتب سازی در 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 خواهیم شد .


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



دیدگاه ها :