• 0
عبد الكريم

كيف تستخدم حلقة foreach واحدة للحصول على قيم من مجموعتين مختلفتين؟!

سؤال

 

السلام عليكم

وأهلا بكم

 

هل ترغب في أن تحصل على أكثر من قيمة من أكثر من مجموعة باستخدام تعليمة foreach واحدة؟  لنقل أنه لديك مجموعات (مصفوفتان) وترغب باستخدام حلقة foreach واحدة لمعالجة كلا المصفوفتين؟

 

الحل بسيط جدا ففي دوت نت الإصدار الرابع قد تم إضافة تابع ملحق جديد يدعى Zip. باختصار وظيفة التابع هو الدمج بين مجموعتين وذلك من خلال توفير العنصر ومقابله من كلا المجموعتين حسب الدليل index الحالي.

 

 طبعا اذا كان كلا المجموعتين ذات بعد متساو فلا بأس أما إن لم يكونا كذلك فإن التابع سوف يتوقف عند الوصول لآخر عنصر من أحد المجموعتين.

 

 لاحظ المثال التالي:

 

مثال سي شارب

 

 

var numbersInWords = new[] { "One", "Two", "Three" };
var numbers = new int[] { 1, 2, 3 };

foreach(var item in numbers.Zip(numbersInWords, (n, nw) =>
new { Number = n , Word = nw}))
{
Console.WriteLine($"{item.Number}: {item.Word}");
}

 

 

 

نفذ البرنامج السابق لتحصل على:

 

ناتج خرج تنفيذ الشيفرة السابقة

PS C:\Sample> dotnet run

1: One

2: Two

3: Three

المصادر:

[1]. https://stackoverflow.com/questions/1955766/iterate-two-lists-or-arrays-with-one-foreach-statement-in-c-sharp

 

https://barmjah.wordpress.com/

 

تم تعديل بواسطه عبد الكريم
تنسيق
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

1 إجابات على هذا السؤال .

  • 0

اكرمك الله

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .