Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当比较具有相同项但处于随机位置的数组时,如何返回true?_C#_Arrays_Compare - Fatal编程技术网

C# 当比较具有相同项但处于随机位置的数组时,如何返回true?

C# 当比较具有相同项但处于随机位置的数组时,如何返回true?,c#,arrays,compare,C#,Arrays,Compare,比较两个数组。 如果第一个数组的项与第二个数组的项相同,则返回true,即使它们位于不同的位置。 以下是两种可能的阵列: int[] arrayA = { 1, 2, 3 }; int[] arrayB = { 3, 2, 1 }; 我只能找到arrayB在arrayA中是否有一个数字。解决这个问题的一个方法是从每个数组创建一个哈希集,然后使用.SetEquals(HashSet HashSet)检查它们是否有相同的值 public static bool CompareArrays(int[

比较两个数组。 如果第一个数组的项与第二个数组的项相同,则返回true,即使它们位于不同的位置。 以下是两种可能的阵列:

int[] arrayA = { 1, 2, 3 };
int[] arrayB = { 3, 2, 1 };

我只能找到arrayB在arrayA中是否有一个数字。

解决这个问题的一个方法是从每个数组创建一个
哈希集
,然后使用
.SetEquals(HashSet HashSet)
检查它们是否有相同的值

public static bool CompareArrays(int[] array1, int[] array2)
{
    // Create sets using Linq
    HashSet<int> set1 = array1.ToHashSet();
    HashSet<int> set2 = array2.ToHashSet();
    // Compare the sets with .SetEquals()
    return set1.SetEquals(set2);
}
公共静态布尔比较数组(int[]array1,int[]array2)
{
//使用Linq创建集合
HashSet set1=array1.ToHashSet();
HashSet set2=array2.ToHashSet();
//将集合与.SetEquals()进行比较
返回set1.SetEquals(set2);
}

解决此问题的一种方法是从每个数组创建一个
哈希集
,然后使用
.SetEquals(HashSet HashSet)
检查它们是否具有相同的值

public static bool CompareArrays(int[] array1, int[] array2)
{
    // Create sets using Linq
    HashSet<int> set1 = array1.ToHashSet();
    HashSet<int> set2 = array2.ToHashSet();
    // Compare the sets with .SetEquals()
    return set1.SetEquals(set2);
}
公共静态布尔比较数组(int[]array1,int[]array2)
{
//使用Linq创建集合
HashSet set1=array1.ToHashSet();
HashSet set2=array2.ToHashSet();
//将集合与.SetEquals()进行比较
返回set1.SetEquals(set2);
}
您可以使用该方法(LINQ)

您可以使用该方法(LINQ)


可能重复的可能重复的可能重复的可能重复的可能重复的
set2
不需要是
HashSet
--
HashSet。SetEquals
接受
IEnumerable
set2
不需要是
HashSet
接受
IEnumerable
。这比
arrayA.ToHashSet().SetEquals(arrayB)
@canton7更昂贵,但仍然更可取,因为它可以产生正确的结果。相反,
set1.SetEquals(set2)
将错误地报告数组{1,2,1}和{1,2,2}相等,因为它忽略了重复的元素。非常正确。有一些解决方法可以使用字典,也不要求您的项目具有可比性。@canton7同意。@canton7您可能希望使用字典提供性能和正确的实现。我已经给出了一个答案,我认为提供第二个答案是不正确的。这比
arrayA.ToHashSet().SetEquals(arrayB)
@canton7更昂贵,但仍然更可取,因为它可以产生正确的结果。相反,
set1.SetEquals(set2)
将错误地报告数组{1,2,1}和{1,2,2}相等,因为它忽略了重复的元素。非常正确。有一些解决方法可以使用字典,也不要求您的项目具有可比性。@canton7同意。@canton7您可能希望使用字典提供性能和正确的实现。我已经给出了一个答案,我认为第二个答案是不对的。