我必须比较两个列表,仅知道它们是否包含相同的值。我不打算对这些差异做任何事情。
在C#中实现这一目标的最佳方式是什么?
我知道我可以循环列表,但想知道是否有任何内置的LINQ / extenstion方法来实现这一目标,从而提供更好的性能。尝试了Except / Intersect,但不知道它们是否是最合适的。
更新:列表中不会包含任何重复内容。
答案 0 :(得分:6)
您想如何处理重复项?例如,您是否会将{2,1,1}视为与{1,2}相同? (我假设订单无关紧要......否则只需使用SequenceEqual
。)
假设你只关心“套”有效,这里有两个选择:
快速而肮脏的方式:
if (!list1.Except(list2).Any() && !list2.Except(list1).Any())
稍微清洁的方式:
var set = new HashSet<int>(list1); // Adjust case accordingly
if (set.SetEquals(list2))
{
// Lists were equal
}
要考虑的一件事:如果您只想将它们视为集合,那么您可能希望使用集合表示来代替列表......