你的问题没有完全说明。您没有为数组定义“平等”。
特别是,顺序重要吗?物品数量呢?
如果订单确实很重要:
return first.SequenceEquals(second);
如果计数无关紧要:
return !first.Except(second).Union(second.Except(first)).Any();
如果顺序无关紧要,计数很重要,则需要如下方法:
public bool Compare<T>(T[] first, T[] second) {
var firstItemCounts = first.GroupBy(x => x)
.ToDictionary(g => g.Key, g => g.Count());
var secondItemCounts = second.GroupBy(x => x)
.ToDictionary(g => g.Key, g => g.Count());
foreach(var key in firstItemCounts.Keys.Union(secondItemCounts.Keys)) {
if(!firstItemCounts.ContainsKey(key) ||
!secondItemCounts.ContainsKey(key)
) {
return false;
}
if(firstItemCounts[key] != secondItemCounts[key]) {
return false;
}
}
return true;
}