假设我需要比较多个集合,找出哪个相等或不相等。
最后,我需要比较多个集合并创建一个最终集合,从每个集合中获取唯一的数据。我还需要处理所有项目它们在不同的集合中重复。
- 你所说的"在不同的环境中重复"是什么意思?(一)一套可以有重复的,或者(二)一套不能有重复的,但可以有多套。
- 要使用的"最佳"集合完全是上下文相关的。有时List最好,有时HashSet最好,有时Dictionary最好。了解他们之间的差异并决定哪一个最适合这种情况。
你应该使用System.Collections.Generic.HashSet。
您可以像这样创建它:
var hashSet = new HashSet(IEnumerable)
然后使用方法进行比较:
如果hashset和list包含相同的项,hashSet.SetEquals(IEnumerable list)将返回true。
如果hashset包含列表中的某个项,则hashSet.Overlaps(IEnumerable list)将返回true。
如果hashset是列表的子集(顺序无关紧要),则hashSet.IsSubsetOf(IEnumerable list)将返回true。
hashSet.IsProperSubsetOf(IEnumerable list)—与IsSubsetOf相同,但订单事项
如果hashset是列表的超集(顺序无关紧要),则hashSet.IsSupersetOf(IEnumerable list)将返回true。
hashSet.IsProperSupersetOf(IEnumerable list)—与IsSupersetOf相同,但订单事项
还有一些方法可以修改:
hashSet.UnionWith(IEnumerable list)将修改hashset以包含存在的元素。在当前哈希集或列表中或两者中。
hashSet.symmetricExceptWith(IEnumerable list)将修改hashset以包含仅存在的元素。在当前哈希集或列表中,但不能同时在两者中。
hashSet.IntersectWith(IEnumerable list)将修改hashset以包含存在的元素。在当前哈希集和列表中。
有关HashSet的更多信息,请参阅msdn文章。
您可以使用HashSet类,该类表示一组不重复的元素,并将IntersectWith、UnionWith、ExceptWith等方法公开用于常用的集合操作。