我必须比较两个列表并且只知道它们是否包含相同的值。我不打算对差异做任何事情。
在 C# 中实现此目标的最佳方法是什么?
我知道我可以循环列表,但想知道是否有任何内置的 LINQ/扩展方法可以实现此目的,从而提供更好的性能。尝试过 Except/Intersect,但不知道它们是否最适合实现此目的。
更新:列表中不会有任何重复项。
最佳答案
您想如何处理重复项?例如,您会将 { 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
}
需要考虑的一件事:如果您只对将它们视为集合感兴趣,您可能希望首先使用集合表示,而不是列表...
关于c# - 任何内置方法只知道两个列表是否不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4943920/