Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Xóa phần tử trùng lặp khỏi List C#

Xóa duplicate khỏi List: Distinct().ToList() (tạo list mới) hoặc HashSet.

Ví dụ minh họa

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        var list = new List { 50, 90, 50, 100 };
        
        Console.WriteLine("List gốc:");
        Console.WriteLine(string.Join(", ", list));
        
        // Cách 1: LINQ Distinct - tạo List mới
        var uniqueList = list.Distinct().ToList();
        Console.WriteLine("\nSau Distinct():");
        Console.WriteLine(string.Join(", ", uniqueList));
        
        // Cách 2: HashSet - tạo List mới
        var uniqueList2 = new HashSet(list).ToList();
        Console.WriteLine("\nSau HashSet:");
        Console.WriteLine(string.Join(", ", uniqueList2));
        
        // Cách 3: Xóa tại chỗ (in-place) - phức tạp hơn
        // List không có RemoveDuplicates() built-in
        // Cần duyệt ngược hoặc dùng HashSet để track
        var seen = new HashSet();
        for (int i = list.Count - 1; i >= 0; i--)
        {
            if (!seen.Add(list[i])) // Add trả về false nếu đã tồn tại
                list.RemoveAt(i);
        }
        Console.WriteLine("\nXóa tại chỗ (in-place):");
        Console.WriteLine(string.Join(", ", list));
    }
}

Kết quả đầu ra

List gốc:
50, 90, 50, 100

Sau Distinct():
50, 90, 100

Sau HashSet:
50, 90, 100

Xóa tại chỗ (in-place):
50, 90, 100

Khuyến nghị: Dùng Distinct().ToList() cho code sạch, HashSet cho hiệu năng, in-place chỉ khi bắt buộc tiết kiệm bộ nhớ.