我有两个ICollection
我想参加工会。目前,我正在使用foreach循环执行此操作,但这感觉冗长而丑陋。什么是Java的addAll()
的C#等价物?
此问题的示例:
ICollection<IDictionary<string, string>> result = new HashSet<IDictionary<string, string>>();
// ...
ICollection<IDictionary<string, string>> fromSubTree = GetAllTypeWithin(elementName, element);
foreach( IDictionary<string, string> dict in fromSubTree ) { // hacky
result.Add(dict);
}
// result is now the union of the two sets
答案 0 :(得分:13)
您可以使用Enumerable.Union扩展名方法:
result = result.Union(fromSubTree).ToList();
由于result
被声明为ICollection<T>
,您需要ToList()
调用才能将生成的IEnumerable<T>
转换为List<T>
(实现ICollection<T>
}})。如果枚举是可接受的,您可以关闭ToList()
调用,并获得延迟执行(如果需要)。
答案 1 :(得分:7)
AddRange()
将源列表附加到另一个列表的末尾,可能符合您的需求。
destList.AddRange(srcList);
答案 2 :(得分:-1)
LINQ的Enumerable.Union将起作用: