嗨,我正在开发这个简单的程序,只要这些数字大于 10 且小于 100,它就会从用户那里获取 5 个数字。我的目标是删除重复的数字,只显示不重复的数字。假设我输入 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();
    }

最佳答案

我想你正在寻找这个:

 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) => 给出 {System.Linq.GroupedEnumerable<int,int,int>} 的集合,其中 x.Key 为您提供唯一元素。
  • .Where(dup=>dup.Count()==1) => 提取包含值计数与 KeyValuePairs
  • 完全相等的 1
  • .Select(res=>res.Key) => 将从上述结果中收集 key
  • 关于c# - 如何从数组中删除重复的数字?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35738321/

    10-17 02:36