C# Unity如何在不考虑顺序的情况下比较两个数组的内容?

C# Unity如何在不考虑顺序的情况下比较两个数组的内容?,c#,unity3d,C#,Unity3d,寻找最有效的方法。我在比较列表时发现,无论顺序如何: 不考虑顺序比较数组内容如何?您可以使用Intersect方法。下面是一个简单的控制台应用程序 using System; using System.Linq; class Program { static void Main() { var nums1 = new int[] { 2, 4, 6, 8, 10, 9 }; var nums2 = new int[] { 1, 3, 6, 9,

寻找最有效的方法。我在比较列表时发现,无论顺序如何:


不考虑顺序比较数组内容如何?

您可以使用
Intersect
方法。下面是一个简单的控制台应用程序

using System;
using System.Linq;

class Program
{
    static void Main()
    {
        var nums1 = new int[] { 2, 4, 6, 8, 10, 9 };
        var nums2 = new int[] { 1, 3, 6, 9, 12, 2 };

        if (nums1.Intersect(nums2).Any()) // check if there is equal items
        {
            var equalItems = nums1.Intersect(nums2); // get list of equal items (2, 6, 9)

            // ...
        }
    }
}

只需将方法体中的
List
更改为
IEnumerable
foreach
而不是
for
,如果这个答案可以信任,那么arrayA可能重复。除了(arrayB)应该给出两个数组在O(n)或附近的差异。因此,如果差值的计数为零,则它们相等(假设它们的长度相同)。
Except
删除重复项。因此,如果您使用的是
,{1,1,1,2,3,3}
,那么
{1,1,2,2,3}
将与
{1,1,2,2,3}
相同,除非
@mjwills您是对的。这是一个可怕的建议。如果你将
相交
{1,1,1,2,3,3}
{1,1,2,2,2,3}
,你会得到什么?@mjwills为什么不测试它?它返回
{1,2,3}
,这就是我的观点。你的代码会说它们是一样的。他们不一样<除了
之外,code>Intersect与
具有相同的缺点。