我有用户定义的类型Items
,它继承了IList
,ICollection
,IEnumerable
。如何将此类型转换为HashSet<Items>
。我正在使用下面的代码片段,有没有有效的方法呢?
public static class Extensions
{
public static bool AddRange<T>(this HashSet<T> @this, IEnumerable<T> items)
{
bool allAdded = true;
foreach (T item in items)
{
added &= @this.Add(item);
}
return allAdded;
}
}
答案 0 :(得分:3)
HashSet<T>
有一个构造函数,它接受IEnumerable<T>
并从集合中实例化该HashSet。你可以简单地称之为。
如果要将自定义类型中的项目加载到现有 HashSet中,您可能希望使用HashSet的UnionWith
方法,其中:
修改当前HashSet对象以包含其自身,指定集合或两者中存在的所有元素。
然而,这两个选项不会做的是给出一个结果,指明是否有任何项目没有通过转换。但是,您可以稍后通过调用HashSet的其他方法(例如IsSupersetOf
)或简单地比较Counts来执行此操作。