如何从数组中删除重复的数字?

时间:2016-03-02 04:06:58

标签: c#

嗨我正在研究这个简单的程序,只要数字大于10且小于100,就会从用户那里获取5个数字。我的目标是删除重复数字,仅显示NOT DUPLICATE数字。假设我输入23,23,40,56,37,我应该只输出40,56,37。请帮助我。提前致谢。这是我的代码:

    static void Main(string[] args)
    {
        int[] arr = new int[5];  
        for (int i = 0; i < 5; i++)
        {
            Console.Write("\nPlease enter a number between 10 and 100: ");
            int number = Convert.ToInt32(Console.ReadLine());
            if (number > 10 && number <= 100)
            {
                arr[i] = number;
            }
            else {
                i--;
            }

        }

        int[] arr2 = arr.Distinct().ToArray(); 
        Console.WriteLine("\n");
        for (int i = 0; i < arr2.Length; i++)
        {
            Console.WriteLine("you entered {0}", arr2[i]);
        }
        Console.ReadLine();
    }

3 个答案:

答案 0 :(得分:4)

一种方法是根据输入数量和计数为1的过滤器组对元素进行分组

int[] arr2 = arr.GroupBy(e=>e)                  
                .Where(e=>e.Count() ==1)
                .Select(e=>e.Key).ToArray();

Demo

答案 1 :(得分:3)

我认为你正在寻找这个:

 int[] arr2 = arr.GroupBy(x => x)
              .Where(dup=>dup.Count()==1)
              .Select(res=>res.Key)
              .ToArray();

输入数组:23 , 23, 40, 56 , 37 输出数组:40 , 56 , 37

工作原理:

  • arr.GroupBy(x => x) =&gt;给出{System.Linq.GroupedEnumerable<int,int,int>}的集合,其中x.Key为您提供了独特的元素。
  • .Where(dup=>dup.Count()==1) =&GT;提取包含值计数恰好等于KeyValuePairs
  • 1
  • .Select(res=>res.Key) =&gt;将从上述结果中收集密钥

答案 2 :(得分:1)

在您的情况下,可能需要LINQ方法的组合:

int[] arr2;
int[] nodupe = arr2.GroupBy(x => x).Where(y => y.Count() < 2).Select(z => z.Key).ToArray();