در دو مقاله قبل که در باره عملگرهای مجموعه ای در LINQ بحث کردیم ، دو عملگر union و distinct را بررسی کردیم . در این مقاله عملگرهای تفاضل و اشتراک در LINQ را مورد بررسی قرار خواهیم داد .
عملگر اشتراک (Intersect) :
برای اشتراک گیری بین دو مجموعه بکار میرود . یعنی عناصری که در هر دو مجموعه وجود دارند را برمیگرداند .
به مثال ساده زیر توجه کنید :
public static void Intersect1()
{
int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 };
int[] numbersB = { 1, 3, 5, 7, 8 };
var commonNumbers = numbersA.Intersect(numbersB);
Console.WriteLine("Common numbers shared by both arrays:\n——————————-");
foreach (var number in commonNumbers)
{
Console.WriteLine(number);
}
}
خروجی برابر : ۵,۸ می باشد .
در مثال دوم می خواهیم اولین کاراکتر لیست محصولات و مشتریان را که در هر دو مشترک هستند را برگردانیم :
public static void Intersect2()
{
var products = new ProductRepository().GetAll();
var customers = new CustomerRepository().GetAll();
var productFirstChars =
from product in products
select product.ProductName[0];
var customerFirstChars =
from customer in customers
select customer.CompanyName[0];
var commonFirstChars = productFirstChars.Intersect(customerFirstChars);
Console.WriteLine("Common first letters from Product names and Customer names:\n————————————–");
foreach (var character in commonFirstChars)
{
Console.WriteLine(character);
}
}
عملگر تفاضل (Except) :
عمل تفاضل دو مجموعه را انجام می دهد یعنی عناصری که در مجموعه اول است و در مجموعه دوم نیست .
در مثال اول ، دو مجموعه عددی داریم که بصورت زیر تعریف شده اند :
public static void Except1()
{
int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 };
int[] numbersB = { 1, 3, 5, 7, 8 };
IEnumerable aOnlyNumbers = numbersA.Except(numbersB);
Console.WriteLine("Numbers in first array but not second array:\n———————————–");
foreach (var number in aOnlyNumbers)
{
Console.WriteLine(number);
}
}
مثال دوم را مطابق معمول با دو لیست محصول و مشتری انجام می دهیم :
public static void Except2()
{
var products = new ProductRepository().GetAll();
var customers = new CustomerRepository().GetAll();
var productFirstChars =
from product in products
select product.ProductName[0];
var customerFirstChars =
from customer in customers
select customer.CompanyName[0];
var productOnlyFirstChars = productFirstChars.Except(customerFirstChars);
Console.WriteLine("First letters from Product names, but not from Customer names:\n—————————————————");
foreach (var character in productOnlyFirstChars)
{
Console.WriteLine(character);
}
}
در تمامی این عملگرهای مجموعه ای ، دو مجموعه باید هم نوع باشند . عملگرهای مجموعه ای در این جلسه به پایان می رسد .
در مقاله بعد ، عملگرهای تبدیل (Conversion) را بررسی می کنیم .
دیدگاهها :