معرفی اپراتور Zip در زبان LINQ
  در این ترفند به معرفی اپراتور Zip در زبان LINQ که یکی از ویژگی های جدید در نسخه DotNet Framework 4.0 می باشد، می پردازیم
   LINQ
   ۱۷۸۱۵
   این مقاله حاوی فایل ضمیمه نمی باشد
   مرتضی صحراگرد
   ۱۳۹۰/۳/۳
ارسال لینک صفحه برای دوستان ارسال لینک صفحه برای دوستان  اضافه کردن به علاقه مندیها اضافه کردن به علاقه مندیها   نسخه قابل چاپ نسخه قابل چاپ

 

تذکر:

این اپراتور در نسخه  .Net Framework 4.0 معرفی شده و در نتیجه در نسخه های پیشین قابل استفاده نمی باشد.

اپراتور Zip جهت ادغام نمودن عناصر نظیر به نظیر دو دنباله (Sequence) استفاده می شود. این ادغام توسط یک تابع انتخابگر (Selection Function) تا زمانی که تعداد عناصر یکی از دنباله ها (یا هر دو در صورتی که تعداد عناصر دو دنباله برابر باشند) به اتمام برسد، ادامه می یابد.

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

برای درک بهتر مسئله به مثال زیر دقت نمایید. فرض کنید دو آرایه یکی از نوع رشته و یکی از نوع عددی به شکل زیر داریم و قصد داریم عناصر نظیر به نظیر این دو را با هم ادغام کنیم.

var letters = new string[] { "A", "B", "C", "D", "E" };
var numbers = new int[] { 1, 2, 3 };

var result = letters.Zip(numbers, (s, i) => s + i.ToString());

foreach (var item in result)
{
    Console.WriteLine(item);
}

خروجی قطعه کد بالا به شکل زیر می باشد:

A1
B2
C3

توجه داشته باشید که تعداد عناصر دنباله result برابر 3 است زیرا تعداد عناصر دنباله کوچکتر برابر 3 عدد است.