تا %60 تخفیف خرید برای 4 نفر با صدور مدرک فقط تا
00 00 00
در توسینسو تدریس کنید

آموزش LINQ در سی شارپ :: قسمت 7 - عملگرهای استاندارد (بخش چهارم)

در این بخش، به بررسی آخرین دسته از عملگر های استاندارد LINQ خواهیم پرداخت که با اتمام این بخش صحبت بر روی عملگر های LINQ به پایان خواهد رسید. عملگر هایی که در این بخش در مورد آنها صحبت خواهیم کرد عبارتند از:

  1. عملگر های Converting: برای تغییر نوع اشیاء استفاده می شوند.
  2. عملگر های Concatenation: برای الحاق دو لیست به یکدیگر مورد استفاده قرار می گیرند.
  3. عملگر های Aggregation: برای استخراج یک مقدار از داخل یک لیست مورد استفاده قرار می گیرند، مانند مجموع، کوچکترین مقدار و ...

عملگر های Converting

از این عملگر ها برای تبدیل اشیاء به نوع های دیگر مورد استفاده قرار می گیرند. این قسمت شامل هشت عملگر می باشد که در زیر به بررسی یکایک این عملگر ها خواهیم پرداخت:

عملگر AsEnumerable

از این عملگر برای تبدیل یک نوع از <><>

عملگر AsQueryable

از این دستور برای تبدیل یک نوع از <><>

عملگر Cast

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


System.Collections.ArrayList list = new System.Collections.ArrayList { 1, 8, 3, 6, 4, 2, 3 };
var query = list.Cast().Select(n => n);
foreach (int i in query)
    Console.WriteLine(i);

در مثال بالا یک ArrayList تعریف شده است که با عملگر Case عناصر آن را به نوع int تبدیل کردیم.

عملگر OfType

از این عملگر برای استخراج عناصر از یک نوع خاص از یک لیست استفاده می شود، برای مثال اگر یک ArrayList با چندین عنصر از چندین نوع داده داشته باشیم، می توانیم نوع مورد نظر را از داخل لیست استخراج کنیم:

System.Collections.ArrayList list = new System.Collections.ArrayList { 1, "test", "A", 6, 'c', "D", 3 };
var numbers = list.OfType();
var characters = list.OfType();
var strings = list.OfType();

عملگر ToArray

این عملگر، عناصر یک لیست از نوع IEnumerable را به آرایه تبدیل می کند:

List numbers = new List { 4, 8, 9, 6, 3, 1, 2, 8 };
int[] array = numbers.ToArray();

عملگر ToDictionary

این عملگر لیست داده شده را به نوع <>

List customers = new List
{
    new Customer() { CustomerID = 1, FirstName = "Mohammad", LastName = "Sadeghi" },
    new Customer() { CustomerID = 2, FirstName = "Ali", LastName = "Rezaee" },
    new Customer() { CustomerID = 3, FirstName = "Hosein", LastName = "Mohammad" }
};
var dictionary = customers.ToDictionary(n => n.CustomerID);
Console.WriteLine(dictionary[2].FirstName);

عملگر ToList

مجموعه موجود از نوع <><>

int[] numbers = { 7, 9, 8, 2, 3, 1, 6, 5 };
numbers.ToList().ForEach(n => Console.WriteLine(n));

عملگر ToLookup

این عملگر لیست داده شده را به نوع <>

List citites = new List
{
    new CityInfo() { Province = "Tehran", CitiyName = "Karaj" },
    new CityInfo() { Province = "Tehran", CitiyName = "Ray" },
    new CityInfo() { Province = "Tehran", CitiyName = "Hashtgerd" },
    new CityInfo() { Province = "Mazandaran", CitiyName = "Babolsar" },
    new CityInfo() { Province = "Tehran", CitiyName = "Noor" },
    new CityInfo() { Province = "Tehran", CitiyName = "Nowshahr" }
};
var query = citites.ToLookup(n => n.Province);
foreach (CityInfo info in query["Tehran"])
    Console.WriteLine(info.CitiyName);

عملگر های Concatenaion

این بخش دارای یک عملگر با نام Concate می باشد که دو لیست را با یکدیگر ادغام می کند:

int[] list1 = { 1, 2, 3, 4, 5 };
int[] list2 = { 5, 6, 7, 8, 9, 10 };
IEnumerable concated = list1.Concat(list2);
foreach (int i in concated)
    Console.WriteLine(i);

عملگر های Aggregation

از این عملگر ها برای استخراج یک مقدار از مجموعه داده شده استفاده می شود، عملگر های این مجموعه به شرح زیر می باشند:

عملگر Average

میانگین مقادیر یک لیست را به دست می آورد:

int[] list1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
Console.WriteLine(list1.Average()); 

عملگر Count

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

int[] list1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
Console.WriteLine(list1.Count()); 


عملگر LongCount

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

عملگر Max

این عملگر بزرگترین عنصر موجود در لیست را بر می گرداند:

int[] list1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
Console.WriteLine(list1.Max()); 

عملگر Min

این عملگر کوچکترین عنصر موجود در لیست را بر می گرداند:

int[] list1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
Console.WriteLine(list1.Min()); 

عملگر Sum

این عملگر حاصل مجموع کلیه عناصر موجود در لیست را بر می گرداند:

int[] list1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
Console.WriteLine(list1.Sum()); 

نکته :: برای متد های ذکر شده می توان یک تابع نیز به عنوان ورودی تعیین کرد که انتخاب کننده فیلد مورد نظر برای محاسبه می باشد، مثال:

List orderHistory = new List
{
    new OrdersHistory() { OrderDate = "1388/01/25", OrderPrice = 125000 },
    new OrdersHistory() { OrderDate = "1388/01/25", OrderPrice = 18500 },
    new OrdersHistory() { OrderDate = "1388/01/12", OrderPrice = 2500000 },
    new OrdersHistory() { OrderDate = "1388/02/12", OrderPrice = 17500 },
    new OrdersHistory() { OrderDate = "1388/01/17", OrderPrice = 41000 },
    new OrdersHistory() { OrderDate = "1388/01/28", OrderPrice = 250000 },
    new OrdersHistory() { OrderDate = "1388/02/06", OrderPrice = 60000 },
    new OrdersHistory() { OrderDate = "1388/02/08", OrderPrice = 281000 },
    new OrdersHistory() { OrderDate = "1388/03/02", OrderPrice = 236000 },
    new OrdersHistory() { OrderDate = "1388/03/02", OrderPrice = 782400 },
};

Console.WriteLine(orderHistory.Sum(n=> n.OrderPrice));
Console.ReadKey();

عملگر Aggregate

از این عملگر برای اعمال یک عملیات دلخواه بر روی عنصر لیست استفاده می شود، برای مثال پیاده سازی عملیات Sum با کمک عملگر Aggregate به صورت زیر می باشد:

int[] list1 = { 2, 3, 4, 5, 6, 7 };
Console.WriteLine(list1.Aggregate((current, next) =>
{
    return current + next;
}));

در سری مقالات LINQ سعی کردم که مفاهیم ابتدایی رو خدمت دوستان عرض کنم. با آشنایی با این موارد میتونیم LINQ رو مباحث دیگری مانند LINQ 2 XML و LINQ 2 Entities بسط بدیم. برای آشنایی بیشتر با مفاهیم مربوط به LINQ 2 Entities و Entity Framework میتونید به سری آموزشی که توسط بنده در سایت قرار داده شده مراجعه کنید. به امید خدا در قسمت های بعدی سعی می کنم در مورد LINQ 2 XML مطالب بیشتری رو خدمت شما تقدیم کنم.

با آرزوی موفقیت برای تمامی دوستان

انجمن تخصصی فناوری اطلاعات ایران :: ITPro.ir
#آموزش_linq #عملگرهای_linq #عملگرهای_استاندارد_در_linq
نظر شما
برای ارسال نظر باید وارد شوید.
5 نظر
افرادی که این مطلب را خواندند مطالب زیر را هم خوانده اند