Remove duplicates from a List in C#

前端 未结 27 2161
广开言路
广开言路 2020-11-22 04:41

Anyone have a quick method for de-duplicating a generic List in C#?

27条回答
  •  余生分开走
    2020-11-22 05:27

    Perhaps you should consider using a HashSet.

    From the MSDN link:

    using System;
    using System.Collections.Generic;
    
    class Program
    {
        static void Main()
        {
            HashSet evenNumbers = new HashSet();
            HashSet oddNumbers = new HashSet();
    
            for (int i = 0; i < 5; i++)
            {
                // Populate numbers with just even numbers.
                evenNumbers.Add(i * 2);
    
                // Populate oddNumbers with just odd numbers.
                oddNumbers.Add((i * 2) + 1);
            }
    
            Console.Write("evenNumbers contains {0} elements: ", evenNumbers.Count);
            DisplaySet(evenNumbers);
    
            Console.Write("oddNumbers contains {0} elements: ", oddNumbers.Count);
            DisplaySet(oddNumbers);
    
            // Create a new HashSet populated with even numbers.
            HashSet numbers = new HashSet(evenNumbers);
            Console.WriteLine("numbers UnionWith oddNumbers...");
            numbers.UnionWith(oddNumbers);
    
            Console.Write("numbers contains {0} elements: ", numbers.Count);
            DisplaySet(numbers);
        }
    
        private static void DisplaySet(HashSet set)
        {
            Console.Write("{");
            foreach (int i in set)
            {
                Console.Write(" {0}", i);
            }
            Console.WriteLine(" }");
        }
    }
    
    /* This example produces output similar to the following:
     * evenNumbers contains 5 elements: { 0 2 4 6 8 }
     * oddNumbers contains 5 elements: { 1 3 5 7 9 }
     * numbers UnionWith oddNumbers...
     * numbers contains 10 elements: { 0 2 4 6 8 1 3 5 7 9 }
     */
    

提交回复
热议问题