如何在C#中从Array中删除相同的元素?
e.g。 array{0,2,2,8,4,6,1,0,4}
输出将为array{0,2,8,4,6,1}
答案 0 :(得分:6)
您可以使用LINQ并执行myArray.Distinct().ToArray()
。
答案 1 :(得分:3)
using System.Linq;
...
var output = array.Distinct().ToArray();
没有LINQ:
int[] array = new[] { 0, 2, 2, 8, 4, 6, 1, 0, 4 };
List<int> result = new List<int>();
foreach (int element in array)
{
if (!result.Contains(element))
result.Add(element);
}
int[] resultArray = result.ToArray();
答案 2 :(得分:1)
这是一种应该在.NET2和C#2中正常工作的方法。
(由于HashSet<T>
类在.NET2中不可用,它使用Dictionary<K,V>
代替有效的O(1)键查找,忽略该值。)
int[] input = new int[] { 0, 2, 2, 8, 4, 6, 1, 0, 4 };
int[] output = DistinctItems(input); // 0, 2, 8, 4, 6, 1
// ...
public static T[] DistinctItems<T>(T[] input)
{
Dictionary<T, bool> dict = new Dictionary<T, bool>(input.Length);
return Array.FindAll(input, delegate(T item)
{
if (dict.ContainsKey(item))
return false;
dict.Add(item, true);
return true;
});
}
答案 3 :(得分:0)
如果您不想允许具有相同值的多个条目,则应使用HashSet<T>
。就像你添加元素时直接检测到的那样,如果它已经存在于内部。但这取决于你的需求......