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与具有相同的缺点。