【发布时间】:2013-10-11 15:35:29
【问题描述】:
如何使数组只包含一个数字?从添加到文本框中的任何随机数中,我需要先将它们转换为整数,然后使用分隔符让程序理解单独的整数,但我如何将整数转换为只在整数的结果列表中计算一次?
【问题讨论】:
如何使数组只包含一个数字?从添加到文本框中的任何随机数中,我需要先将它们转换为整数,然后使用分隔符让程序理解单独的整数,但我如何将整数转换为只在整数的结果列表中计算一次?
【问题讨论】:
您可以从使用 HashSet 作为集合类型开始(.Net 3.5 及更高版本)。这将不允许重复值。然后,如果您不能按原样使用 HashSet,您可以在其上调用 .ToArray。
即:
HashSet<int>
【讨论】:
你可以使用 Distinct 方法
input.Split(new char[]{separator},StringSplitOptions.RemoveEmptyEntries)
.Select(x=>int.Parse(x))
.Distinct();
如果你想避免 LINQ
var array=input.Split(new char[]{separator},StringSplitOptions.RemoveEmptyEntries);
var set=new HashSet<int>();
foreach(var x in array)set.Add(int.Parse(x));
var unique=set.ToArray();
【讨论】:
使用 LINQ 的 Distinct 方法删除重复项:
var numbers = new[] { 1, 2, 2, 3 };
numbers = numbers.Distinct().ToArray(); // 1, 2, 3
【讨论】:
您可以使用Array.Contains 检查数组中是否已存在项目。不过,我建议使用通用集合,例如 List 或 Dictionary。
【讨论】:
检查LINQ方法Distinct
使用示例:
List<int> ages = new List<int> { 21, 46, 46, 55, 17, 21, 55, 55 };
IEnumerable<int> distinctAges = ages.Distinct();
Console.WriteLine("Distinct ages:");
foreach (int age in distinctAges)
{
Console.WriteLine(age);
}
/*
This code produces the following output:
Distinct ages:
21
46
55
17
*/
【讨论】: