سؤال

لدي List<sting> مع 5 إدخالات. [0],[1],[2],[3],[4].

إذا كنت تستخدم List.Clear() تتم إزالة جميع العناصر.

أحتاج إلى إزالة عنصر معين ، على سبيل المثال حتى [1].هذا يعني في قائمتي فقط 2 items [0] and [1].كيف تفعل ذلك مع ج#?

هل كانت مفيدة؟

المحلول

يمكنك استخدام القائمة.إزالةحيث (المسند)..بدلا من ذلك ، يمكنك القيام به لحلقة حلقات إلى الوراء ، وإزالة العناصر حتى العنصر الذي كنت بعد إي

for(var i = List.Count()-1; i>=0; i--) {
   var item = List[i];
   if (item != "itemThatYourLookingFor") {
      List.Remove(item);
      continue;
   }
   break;
}

نصائح أخرى

إذا كنت تريد إزالة جميع العناصر بعد الفهرس 1 (أي الاحتفاظ بالبندين الأولين فقط):

if (yourList.Count > 2)
    yourList.RemoveRange(2, yourList.Count - 2);

إذا كنت بحاجة إلى إزالة جميع العناصر بعد العنصر مع القيمة من "[1] " ، بغض النظر عن مؤشره:

int index = yourList.FindIndex(x => x == "[1]");
if (index >= 0)
    yourList.RemoveRange(index + 1, yourList.Count - index - 1);

يمكنك استخدام طريقة جيترانج.

لذا..

مايليست = مايليست.جيترانج (0,2);

..سوف تعطيك ما كنت طالبا أعلاه.

List<string> strings = new List<string>{"a", "b", "c", "d", "e"};
List<string> firstTwoStrings = strings.Take(2).ToList();
// firstTwoStrings  contains {"a", "b"}

ال Take(int count) طريقة سوف أترك لكم مع عدد العناصر.

يمكنك إزالة نطاق من قائمة ، وإعطاء مؤشر البداية وعدد العناصر المراد إزالتها.

var items = new List<string> {"0", "1", "2", "3", "4", "5"};
var index = items.IndexOf("1") + 1;

if (index >= 0)
{
    items.RemoveRange(index, items.Count - index);
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top