عملگرهای مجموعه ای در Linq بخش سوم

عملگرهای مجموعه ای در Linq بخش سوم

در دو مقاله قبل که در باره عملگرهای مجموعه ای در 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<int> 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) را بررسی می کنیم .


تاریخ انتشار : ۳ فروردین ۱۳۹۵



دیدگاه ها :