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

Concat :

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

قبل از هر کاری ابتدا فضای نام زیر را به پروژه خود بیفزاید :

Using System.Linq;

در کد های زیر دو مجموعه تعریف شده است که با متد Concat هر دو را با هم ادغام  کرده و در متغیر result1  قرار می دهیم و در نهایت مجموعه را  پیمایش و چاپ می کنیم :

static void Main()
    {
    int[] array1 = { 1, 3, 5 };
	int[] array2 = { 0, 2, 4 };
    var result1 = array1.Concat(array2);
    foreach (int value in result1)
	{
	    Console.WriteLine(value);
	}
    }

خروجی حاصل از اجرای تکه کد فوق به صورت زیر خواهد بود :

1
3
5
0
2
4

cast :

تمامی عناصر مجموعه مبدا را به نوع تعیین شده cast می کند  و در نهایت نتیجه ، مجموعه ای از نوع (data type) مورد نظر می باشد .

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

using System;
using System.Linq;

class A
{
    public void Y()
    {
	Console.WriteLine("A.Y");
    }
}

class B : A
{
}

class Program
{
    static void Main()
    {
	B[] values = new B[3];
	values[0] = new B();
	values[1] = new B();
	values[2] = new B();

	// Cast all objects to a base type.
	var result = values.Cast<A>();
	foreach (A value in result)
	{
	    value.Y();
	}
    }
}

خروجی حاصل به صورت زیر خواهد بود :

A.Y
A.Y
A.Y

Reverse :

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

static void Main()
    {
	// Create an array.
	int[] array = { 1, 2, 4 };
	// Call reverse extension method on the array.
	var reverse = array.Reverse();
	// Write contents of array to screen.
	foreach (int value in reverse)
	{
	    Console.WriteLine(value);
	}
    }

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

4
2
1

First :

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

int[] numbers = { 9, 34, 65, 92, 87, 435, 3, 54, 
                                83, 23, 87, 435, 67, 12, 19 };

            int first = numbers.First();

            Console.WriteLine(first); 

خروجی آن عدد 9 می باشد .

می توان در متد First شرط هم قرار داد . که برای اینکار نیاز به عبارات lambda داریم .

قصد داریم اولین عدد بزرگتر از 80 را در مجموعه بالا پیدا کنیم . برای این کار خواهیم داشت :

int first = numbers.First(number => number > 80);

            Console.WriteLine(first);

که خروجی آن عدد 92 می باشد .

FirstOrDefault :

همانند متد First می باشد با این تفاوت که اگر مجموعه  خالی باشد یک مقدار پیش فرض با توجه به data type مربوطه بر میگرداند .می تواند  برای از بین بردن استثناءها مورد استفاده قرار گیرد .

int[] numbers = { };
            int first = numbers.FirstOrDefault();
            Console.WriteLine(first);

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

پرانتز : نوع پیش فرض  int  : صفر (0) می باشد .

Last :

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

int[] numbers = { 9, 34, 65, 92, 87, 435, 3, 54, 
                                83, 23, 87, 67, 12, 19 };
            int last = numbers.Last();
            Console.WriteLine(last);

خروجی » 19

 در صورت نیاز به استفاده از فیلتر/شرط ،  می توان  فیلتر و یا شرط مورد نیاز خود را در پردانتز داخل متد  قرار داد ، که در این حالت شرط مورد نظر خود را با توسط از Lambda خواهیم نوشت .

int[] values = { 1, 2, 3, 4, 5, 6 };
int lastOdd = values.Last(element => element % 2 != 0);
Console.WriteLine(lastOdd);

در مثال بالا ابتدا شرط مورد نظر بر روی مجموعه اعمال می شود که فقط عناصری انتخاب می شود که باقیمانده آنها بر عدد 2 نا مساوی صفر باشد (اعداد فرد)  و در آخر با استفاده از متد Last آخرین عنصر آنها را که عدد 5 می باشد انتخاب می کند .

LastOrDefault :

همانند متد Last می باشد با این تفاوت که اگر مجموعه خالی باشد ، یک مقدار پیش فرض با توجه به نوع داده  مبداء را بر میگرداند .

string[] fruits = { };
      string last = fruits.LastOrDefault();
      outputBlock.Text +=
          String.IsNullOrEmpty(last) ? "<string is null or empty>" : last + "\n";

 خروجی حاصل به صورت زیر خواهد بود :

 <string is null or empty>

توسط : عثمان رحیمی  3 ماه قبل ، سه شنبه 12 اسفند 1393 ساعت 20:21  0  2869

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


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

مطالب مرتبط