比较2 List<MyClasses>
的最佳途径是什么?
列表2可以包含比列表1更多的值,这是可以的。只需要确保列表2包含列表1中的所有内容。它们的顺序也不一样。
答案 0 :(得分:6)
您可以使用Except
查找两个集合的集合差异。
var hasAllItems = !list2.Except(list1).Any();
答案 1 :(得分:1)
如果list2不包含list1中的项目,则会通知您:
list1.Any(x => !list2.Contains(x));
你可以将它放在变量中,这样你就不必考虑双重否定:
var list2ContainsList1 = !list1.Any(x => !list2.Contains(x));
答案 2 :(得分:1)
一种方法:
List1.All(o => List2.Contains(o));
这表示“当且仅当列表1中的每个项目都包含在列表2中时才返回true”
答案 3 :(得分:1)
最简单的方法是使用Except(在您的情况下,您不关心列表中元素的顺序):
var elementsInList2NotInList1 = list2.Except(list1);
请记住,此方法使用default equality comparer来比较值。如果你关心元素的排序,你需要做额外的工作,以便检查列表的每个元素如何等于另一个列表的元素。额外的工作如下:
Equals()
和GetHashCode()
方法。