UYOU
你可以试试HashSet<int>,例如 int[,] arr = new int[3, 3] { {1, 2, 6 }, {4, 1, 5 }, {6, 1, 8 } }; HashSet<int> unique = new HashSet<int>(); foreach (var item in arr) if (!unique.Add(item)) Console.WriteLine(item); // Not unique, print it out结果: 1 6 1如果我们想打印每个副本一次,我们可以添加另一个HashSet<int>: HashSet<int> unique = new HashSet<int>(); HashSet<int> duplicates = new HashSet<int>(); foreach (var item in arr) if (!unique.Add(item)) duplicates.Add(item); foreach (var item in duplicates) Console.WriteLine(item);最后,如果您想计算重复出现的次数,我们可以更改HashSet<int> duplicates为Dictionary<int, int> duplicates: HashSet<int> unique = new HashSet<int>(); Dictionary<int, int> duplicates = new Dictionary<int, int>(); foreach (var item in arr) if (!unique.Add(item)) if (duplicates.TryGetValue(item, out int count)) duplicates[item] = count + 1; else duplicates[item] = 2; foreach (var item in duplicates) Console.WriteLine($"{item.Key} appears {item.Value} times");编辑:您可以将foreach循环更改为嵌套 for循环,例如:所有重复项 for (int i = 0; i < arr.GetLength(0); ++i) for (int j = 0; j < arr.GetLength(1); ++j) if (!unique.Add(arr[i, j])) Console.WriteLine(arr[i, j]); Distinct duplicates HashSet<int> duplicates = new HashSet<int>(); for (int i = 0; i < arr.GetLength(0); ++i) for (int j = 0; j < arr.GetLength(1); ++j) if (!unique.Add(arr[i, j])) if (duplicates.Add(arr[i, j])) // print distinct duplicate only Console.WriteLine(arr[i, j]);
大话西游666
或许是这样的:var arr = new int[3, 3]{{1,2,6}, {4,1,5}, {6,1,8}};
var duplicates = arr
.Cast<int>()
.GroupBy(n => n)
.Where(g => g.Count() > 1)
.Select(g => g.Key)
.ToArray();.Cast<int>()使数组可用于 LINQ,.GroupBy(n => n)按值对数字进行分组,.Where(g => g.Count() > 1)计算组中的项目数,.Select(g => g.Key)仅返回组键 - 原始值。.Where(g => g.Count() > 1).Select(g => g.Count())返回每个的计数,或者根据需要对组进行操作。