如何从数组中删除重复的数字
本文关键字:数字 删除 数组 | 更新日期: 2023-09-27 18:37:02
嗨,我正在开发这个简单的程序,只要数字大于 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();
}
一种方法是根据输入编号对元素进行分组,并筛选计数为 1 的组
int[] arr2 = arr.GroupBy(e=>e)
.Where(e=>e.Count() ==1)
.Select(e=>e.Key).ToArray();
Demo
我想你正在寻找这个:
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)
=> 提取包含值计数完全等于1
的KeyValuePairs
-
.Select(res=>res.Key)
=> 将从上述结果中收集密钥
在您的情况下,可能需要 LINQ 方法的组合:
int[] arr2;
int[] nodupe = arr2.GroupBy(x => x).Where(y => y.Count() < 2).Select(z => z.Key).ToArray();