我想连接两个hashset,但是当我使用Linq时,我得到一个IEnumerable而不是一个新的hashset
var hashSet1 = new HashSet<string>();
hashSet1.Add("foo");
hashSet1.Add("foo1");
hashSet1.Add("foo2");
hashSet1.Add("footoexclude");
var hashSet2 = new HashSet<string>();
hashSet2.Add("fooh2");
hashSet2.Add("fooh3");
hashSet2.Add("foo2h4");
hashSet2.Add("footoexclude");
var hres = hashSet1.Union(hashSet2);
有什么解决方案吗?
答案 0 :(得分:3)
请勿将Linq
与Hashset
一起使用(如果可能)。 Hashset是出于性能原因而设计的,除了创建新的
而不是Linq union
使用内置UnionWith
你的hashset 1将包含一个串联
hashSet1.UnionWith(hashSet2);
UnionWith()
方法用于修改HashSet
以包含其自身中存在的所有元素以及与其建立联合的其他(IEnumerable)集合中的元素。