در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

آموزش لینک (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
عنوان
1 آموزش لینک (LINQ) صفر تا صد در دات نت قسمت 1 : مقدمات رایگان
2 آموزش لینک (LINQ) صفر تا صد در دات نت قسمت 2 : پرکاربردترین ها رایگان
3 آموزش لینک (LINQ) صفر تا صد در دات نت قسمت 3 : ساختار اجرای کوئری رایگان
4 آموزش لینک (LINQ) صفر تا صد در دات نت قسمت 4 : عملگرهای استاندارد رایگان
5 آموزش لینک (LINQ) صفر تا صد در دات نت قسمت 5 : عملگرهای استاندارد رایگان
6 آموزش لینک (LINQ) صفر تا صد در دات نت قسمت 6 : عملگرهای استاندارد رایگان
7 آموزش لینک (LINQ) صفر تا صد در دات نت قسمت 7 : عملگرهای استاندارد رایگان
زمان و قیمت کل 0″ 0
5 نظر
zolal

سلام

لطفا ادامه بدین :)

fardin_esmi

مرسی بابت زحماتی که کشیدین

قسمت join به نظرم مشکل تر از بقیه قسمتها بود

mrfarmani@gmail.com

بسیار عالی.

zahra .m

سلام استاد

اینترفیس IQuerable دقیقاً چه کار میکنه؟

حسین احمدی

سلام، وقت بخیر. این اینترقیس مربوط به قابلیت های کوئری گرفتن بر روی یک منبع داده هست، یعنی Expression ورودی که می تونه به صورت lambda یا کوئری Linq باشه رو میگیره، بعد بر اساس کلاس های جانبی که تعریف شده کوئری رو بر روی Source اجرا می کنه. داخل این اینتفریس بحث Provider خیلی مهمه که مربوط به اینترفیس IQueryProvider میشه. پیشنهاد می کنم برای درک بهتر این لینک رو به صورت کامل مطالعه کنید تا موضوع براتون کامل جا بیافته.

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره پاییزه می تونی امروز ارزونتر از فردا خرید کنی ....