有什么办法来比较两个列表的功能与在 C# 中的给定的比较函数已知大小相等吗?

标签: Linq C#
发布时间: 2017/2/28 22:42:09
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我想比较两个数组的已知大小相等和比较项目的指数。通常情况下,下面的代码是我会用什么来实现这一目标︰

public bool CompareLists(object[] arr1, object[] arr2)
{
    for (int i = 0; i < arr1.Length; ++i)
    {
        if (!( <compare arr1[i] to arr2[i]; may not be equality comparison> ))
            return false;
    }

    return true;
}

有办法做到这一点功能在 C# 中吗?使用 Linq 怎么样?我想看看起来类似于下面是否可行︰

return arr.Compare(arr2, (item1, item2) => < some comparison here > );

解决方法 1:

我认为你看 SequenceEqual 。你可以提供 IEqualityComparer 。MSDN 的示例︰

Product[] storeA = { new Product { Name = "apple", Code = 9 }, 
                           new Product { Name = "orange", Code = 4 } };

Product[] storeB = { new Product { Name = "apple", Code = 9 }, 
                           new Product { Name = "orange", Code = 4 } };

bool equalAB = storeA.SequenceEqual(storeB, new ProductComparer());

Console.WriteLine("Equal? " + equalAB);

如果你想要避免创建实现类 IEqualityComparer 每个比较,你得要创建您自己的重载的 SequenceEqual 方法。

赞助商