是否总是可忽略的 except 和相交操作的顺序

本文关键字:操作 顺序 except 可忽略 是否 | 更新日期: 2023-09-27 18:28:59

对我来说,似乎任何操作都像

var list = new List<int>();
// list.Add some elements...
list.Except(anotherList).Intersect(yetAnotherList)

这总是像:

list.Intersect(yetAnotherList).Except(anotherList)

我不是100%确定。

感谢您的帮助。

是否总是可忽略的 except 和相交操作的顺序

从纯粹的集合论的角度来看,顺序在这里并不重要。在这两个步骤中,您只是从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 }