比较2个字符串数组

San*_*ara 2 c# collections data-structures

我想以 最快的方式比较2个字符串数组.
我有类似下面的东西.

这是正确的做法吗?或者有更好的方法

            bool matching=false;
            //say templateArr is the template array and dataArr as array to be compared
            string[] templateArr = {"Dictionary_type","Translation_EN" };
            string[] dataArr = { "Dictionary_type", "Translation_EN" };

            if (templateArr.Union(dataArr).Distinct().Count() == templateArr.Count())
                matching = true;
Run Code Online (Sandbox Code Playgroud)

Ste*_*idi 5

要测试集合相等性,可以使用Enumerable.SequenceEquals如下方法.

using System.Linq;

bool AreEqual()
{
    string[] templateArr = { "Dictionary_type", "Translation_EN" };
    string[] dataArr = { "Dictionary_type", "Translation_EN" };

    return templateArr.SequenceEquals(dataArr);
}
Run Code Online (Sandbox Code Playgroud)

如果要测试集合等价(元素的顺序无关紧要),则可以使用set-equality,如下所示.

bool AreEquivalent()
{
    string[] templateArr = { "Dictionary_type", "Translation_EN" };
    string[] dataArr = { "Dictionary_type", "Translation_EN" };

    return new HashSet<string>(templateArr).SetEquals(dataArr);
}
Run Code Online (Sandbox Code Playgroud)

根据MSDN文档,这两种情况都是按线性时间实现的.