首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#:两个ICollections的联合?(相当于Java的addAll())

C#:两个ICollections的联合?(相当于Java的addAll())
EN

Stack Overflow用户
提问于 2010-03-18 02:19:18
回答 3查看 10.3K关注 0票数 13

我有两个ICollection,我想要加入联盟。目前,我使用foreach循环来做这件事,但这感觉很冗长和可怕。Java的addAll()的C#等价物是什么

此问题的示例:

代码语言:javascript
复制
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
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-03-18 02:22:07

您可以使用Enumerable.Union扩展方法:

代码语言:javascript
复制
result = result.Union(fromSubTree).ToList();

由于result被声明为ICollection<T>,因此需要使用ToList()调用将结果IEnumerable<T>转换为List<T> (实现ICollection<T>)。如果枚举是可接受的,您可以停止ToList()调用,并获得延迟执行(如果需要)。

票数 14
EN

Stack Overflow用户

发布于 2013-05-10 05:22:39

AddRange()会将源列表追加到另一个列表的末尾,这可能会满足您的需要。

代码语言:javascript
复制
destList.AddRange(srcList);
票数 8
EN

Stack Overflow用户

发布于 2010-03-18 02:21:58

LINQ的Enumerable.Union将会工作:

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2464767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档