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)
要测试集合相等性,可以使用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文档,这两种情况都是按线性时间实现的.
| 归档时间: |
|
| 查看次数: |
3708 次 |
| 最近记录: |