الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

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

بدأه عبد الكريم في 22 نوفمبر 2017 · 1 رد · 725 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

 

السلام عليكم

وأهلا بكم

 

هل ترغب في أن تحصل على أكثر من قيمة من أكثر من مجموعة باستخدام تعليمة 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/

 

تم تعديل هذه المشاركة بواسطة عبد الكريم في 22 نوفمبر 2017 في 17:47 — السبب: تنسيق

#2

اكرمك الله

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…