Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

วิธีลบช่วงข้อมูลออกจาก List ใน C#

บทความนี้สาธิตวิธีการลบช่วงข้อมูล (range of elements) ออกจาก List<T> โดยใช้ method RemoveRange(int index, int count)

ตัวอย่างที่ 1: ลบช่วงข้อมูลจาก List

using System;
using System.Collections.Generic;

public class Demo
{
    public static void Main(String[] args)
    {
        List<string> list1 = new List<string>();
        list1.Add("One");
        list1.Add("Two");
        list1.Add("Three");
        list1.Add("Four");
        list1.Add("Five");

        Console.WriteLine("Elements in List1...");
        foreach (string res in list1)
        {
            Console.WriteLine(res);
        }

        List<string> list2 = new List<string>();
        list2.Add("India");
        list2.Add("US");
        list2.Add("UK");
        list2.Add("Canada");
        list2.Add("Poland");
        list2.Add("Netherlands");

        Console.WriteLine("Elements in List2...");
        foreach (string res in list2)
        {
            Console.WriteLine(res);
        }

        Console.WriteLine("\nIs List2 equal to List1? = " + list2.Equals(list1));
        Console.WriteLine("\nCount of elements in list2 = " + list2.Count);

        list2.RemoveRange(1, 3); // ลบ 3 รายการ เริ่มจาก index 1 (US, UK, Canada)

        Console.WriteLine("\nCount of elements in list2 (updated) = " + list2.Count);
        Console.WriteLine("Elements in List2... UPDATED");
        foreach (string res in list2)
        {
            Console.WriteLine(res);
        }
    }
}

ผลลัพธ์

Elements in List1...
One
Two
Three
Four
Five
Elements in List2...
India
US
UK
Canada
Poland
Netherlands
Is List2 equal to List1? = False
Count of elements in list2 = 6
Count of elements in list2 (updated) = 3
Elements in List2... UPDATED
India
Poland
Netherlands

ตัวอย่างที่ 2: ลบช่วงข้อมูลหลายครั้งติดต่อกัน

using System;
using System.Collections.Generic;

public class Demo
{
    public static void Main(String[] args)
    {
        List<string> list = new List<string>();
        list.Add("India");
        list.Add("US");
        list.Add("UK");
        list.Add("Canada");
        list.Add("Poland");
        list.Add("Netherlands");
        list.Add("Bhutan");
        list.Add("Singapore");

        Console.WriteLine("Elements in List...");
        foreach (string res in list)
        {
            Console.WriteLine(res);
        }

        Console.WriteLine("\nCount of elements in list = " + list.Count);

        list.RemoveRange(1, 3); // ลบ US, UK, Canada
        Console.WriteLine("\nCount of elements in list (updated) = " + list.Count);
        Console.WriteLine("Elements in List... UPDATED");
        foreach (string res in list)
        {
            Console.WriteLine(res);
        }

        list.RemoveRange(2, 3); // ลบ Bhutan, Singapore (และอีก 1 ตัวถ้ามี)
        Console.WriteLine("\nCount of elements in list (updated) = " + list.Count);
        Console.WriteLine("Elements in List... UPDATED");
        foreach (string res in list)
        {
            Console.WriteLine(res);
        }
    }
}

ผลลัพธ์

Elements in List...
India
US
UK
Canada
Poland
Netherlands
Bhutan
Singapore
Count of elements in list = 8
Count of elements in list (updated) = 5
Elements in List... UPDATED
India
Poland
Netherlands
Bhutan
Singapore
Count of elements in list (updated) = 2
Elements in List... UPDATED
India
Poland

คำอธิบายเพิ่มเติม

  • RemoveRange(int index, int count) ลบ count รายการ เริ่มจาก index
  • index ต้องอยู่ในช่วง 0 ถึง Count-1, count ต้องไม่เกินจำนวนที่เหลือ
  • โยน ArgumentOutOfRangeException ถ้าพารามิเตอร์ไม่ถูกต้อง
  • เวลา complexity: O(n) - ต้องเลื่อนข้อมูลหลังช่วงที่ลบมาทับตำแหน่งเดิม
  • Method คล้ายกัน: RemoveAt(index) ลบ 1 รายการ, Remove(item) ลบค่าแรกที่พบ