对我而言,似乎任何操作都像
var list = new List<int>();
// list.Add some elements...
list.Except(anotherList).Intersect(yetAnotherList)
这总是一样的:
list.Intersect(yetAnotherList).Except(anotherList)
我不是百分百肯定。
感谢您的帮助。
答案 0 :(得分:1)
从纯粹的理论角度来看,这里的顺序无关紧要。在这两个步骤中,您只需从list
中删除元素。如果元素位于anotherList
中的yetAnotherList
或不,则会从列表中删除该元素。是否在前一句中切换“或”的操作数并没有什么区别。
为了说明,让我们构造三个列表(这里设置,因为这些是设置操作):
list = { A, B, C, D }
anotherList = { A, B, E, F }
yetAnotherList = { A, C, E, G }
此处的每个集合都有一个元素,它位于所有三个集合中(A
),一个元素位于每个其他集合中,一个元素仅存在于该集合中但不存在于其他集合中。所以我们在这里讨论了所有可能的交集和集合差异的情况。
list.Except(anotherList)
会产生{ C, D }
。将其与yetAnotherList
相交会产生{ C }
。
list.Intersect(yetAnotherList)
会产生{ A, C }
。取消anotherList
再次产生{ C }
。