Avatar ·

كيفية إزالة العناصر من قائمة List<T> باستخدام LINQ في C#؟

مرحباً بالجميع! أنا مبتدئ في C# وقد واجهت موقفاً حيث أحتاج إلى إزالة عدة عناصر من قائمة List تستوفي شرطاً معيناً. حالياً أستخدم حلقة for عادية مع الإزالة حسب الفهرس، لكن هذا يعمل بشكل غير صحيح — بعد الإزالة تتغير الفهارس وأتخطى العناصر. إليك مثال: لدي قائمة أرقام، وأريد إزالة جميع الأرقام الزوجية. ```csharp List numbers = new List { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; for (int i = 0; i < numbers.Count; i++) { if (numbers[i] % 2 == 0) { numbers.RemoveAt(i); } } ``` بعد هذا الكود، تبقى العناصر في القائمة: 1, 3, 5, 7, 9 — يبدو صحيحاً. لكن إذا أضفت المزيد من العناصر أو جعلت الشرط أكثر تعقيداً، تبدأ المشاكل. على سبيل المثال، إذا قمت بإزالة العنصر عند الفهرس 1 (القيمة 2)، فإن العنصر التالي (3) ينتقل إلى الفهرس 1، بينما تنتقل الحلقة إلى الفهرس 2، متخطيةً إياه. سمعت أن LINQ يمكن أن يساعد، لكنني لا أفهم كيفية تطبيقه للإزالة. في LINQ هناك طرق مثل Where