معرفی متدهای LINQ بخش دوم

Orderby :

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

قطعه کد زیر نحوه مرتب کردن مجموعه را نشان می دهد :

static void Main()
    {
    // Input array.
    string[] array = { "the", "glass", "bead", "game" };

    // Order alphabetically by reversed strings.
    var result = array.OrderBy(a => new string(a.ToCharArray().Reverse().ToArray()));

    // Display results.
    foreach (var item in result)
    {
        Console.WriteLine(item);
    }
    }

که خروجی آن به صورت زیر خواهد بود :

bead
the
game
glass

OrderByDescending :

 این متد برای مرتب سازی به صورت نزولی مورد استفاده قرار می گیرد ، برعکس OrderBy می باشد .

List<int> list = new List<int>(){1,2,3,4,5,6,7,8,9};

foreach (var item in list.OrderByDescending(x => x))
            {
                Console.WriteLine(item);                
            }

خروجی به دست آمده به صورت زیر می باشد:

9 , 8 ,7 ,6 ,5 ,4 ,3 ,2 ,1

Distinct :

عناصری تکراری از مجموعه را حذف می کند .

مجموعه ای را در نظر بگیرید که شامل اعضای تکراری می باشد و ما قصد داریم از اعضای تکراری فقط یک عنصر را بگیریم . مثلا فرض کنید که مجموعه ای از اعداد از 1 تا 100 داریم که عدد یک 10 بار تکرار شده است و ما قصد داریم اعداد را از یک تا 100 به صورت صعودی نمایش دهیم ، برای این کار نیاز داریم از عدد یک که ده بار تکرار شده است فقط یکی را انتخاب کنیم که برای انجام این کار می توان از این متد استفاده نمود .

int[] array1 = { 1, 2, 2, 3, 4, 4 };
    // Invoke Distinct extension method.
    var result = array1.Distinct();
    // Display results.
    foreach (int value in result)
    {
        Console.WriteLine(value);
    }

خروجی بدست آمده برابر است با :

1
2
3
4

Single :

در صورتی که فقط یک عنصر با شرط تعیین شده درست باشد آن  عنصر از مجموعه را بر میگرداند . اگر بیش از چند عنصر با شرط ورودی ما درست باشد باعث ایجاد استثناء خواهد شد .

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

    int[] array1 = { 1, 3, 1000, 4, 5 };
    int value1 = array1.Single(element => element > 999);

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

    int[] array2 = { 4 };
    int value2 = array2.Single();

 در صورتی که بیش از یک عنصر از مجموعه با شرط ما درست باشد باعث ایجاد استثناء خواهد شد .

try
    {
        int value3 = array1.Single(element => element > 0);
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.GetType());
    }

خروجی  :

System.InvalidOperationException

 SingleOrDefault :

همانند متد single می باشد با این تفاوت که اگر هیچ عنصری در مجموعه با شرط ما پیدا نشود و یا مجموعه خالی باشد ، مقدار پیش فرض را با توجه به data type مورد نظر بر میگرداند .

int[] array = { 1, 2, 3 };

    // Default is returned if no element found.
    int a = array.SingleOrDefault(element => element == 5);
    Console.WriteLine(a);

    // Value is returned if one is found.
    int b = array.SingleOrDefault(element => element == 1);
    Console.WriteLine(b);

    try
    {
        // Exception is thrown if more than one is found.
        int c = array.SingleOrDefault(element => element >= 1);
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.GetType());
    }

Except :

عناصری از مجوعه اول را بر میگرداند که در مجموعه دوم وجود ندارند .

// Contains four values.
    int[] values1 = { 1, 2, 3, 4 };

    // Contains three values (1 and 2 also found in values1).
    int[] values2 = { 1, 2, 5 };

    // Remove all values2 from values1.
    var result = values1.Except(values2);

    // Show.
    foreach (var element in result)
    {
        Console.WriteLine(element);
    }

خروجی به دست آمده :

3
4

 


توسط : عثمان رحیمی  2 ماه قبل ، پنج شنبه 20 فروردین 1394 ساعت 20:35  1  1641

نظر شما برای ما مهم است و به ما در بهبود سایت کمک میکند.


ارسال نظر
  • نام (اختیاری ) :
  • پست الکترونیک :
  • توضیحات :

مطالب مرتبط

نظرات خوانندگان

کاربر مهمان (mozhgan)  در تاریخ : 4 ماه قبل ، شنبه 9 آبان 1394 ساعت 00:00

سلام مطالبتون خیلی بهم کمک کرد.ممنون