可能重复:
比较两个集合的相等性
我需要验证两个 IEnumerable<T>
列表是否具有相同的元素,不一定按相同顺序。
我正在针对 .NET 3.5 进行开发。
以下是测试。问题是,应该如何实现 HasSameElements()
?
var l1 = new[]{1,2,3};
var l2 = new[]{3,1,2};
bool rez1 = l1.HasSameElements(l2);//should be true
var l3 = new[]{1,2,3,2};
var l4 = new[]{3,1,2,2};
bool rez2 = l3.HasSameElements(l4);//should be true
var l5 = new[]{1,2,3,2};
var l6 = new[]{1,2,3};
bool rez3 = l5.HasSameElements(l6);//should be false
附加说明:
在示例中我使用了IEnumerable,但T可以是任何类型。T是否必须实现IComparable接口?
Enumerable.SequenceEquals()本身不起作用,它期望元素的顺序相同。
这是HasElements的模板:
[只是一些占位符文本,解决Markdown“代码格式”错误的问题]
public static class Extensions {
public static bool HasElements(this IEnumerable<T> l1, IEnumerable<T> l2){
throw new NotImplementedException();
}
}