如果我有类型字符串(或任何其他类型)的两个列表,什么是连接两个列表的快速方法?
顺序应该保持不变。应该删除重复的内容(尽管两个链接中的每一项都是唯一的)。当我在谷歌上搜索的时候,我并没有找到太多关于这方面的信息,也不想为了加快交付速度而实现任何。net接口。
如果我有类型字符串(或任何其他类型)的两个列表,什么是连接两个列表的快速方法?
顺序应该保持不变。应该删除重复的内容(尽管两个链接中的每一项都是唯一的)。当我在谷歌上搜索的时候,我并没有找到太多关于这方面的信息,也不想为了加快交付速度而实现任何。net接口。
当前回答
你可以试试:
List<string> a = new List<string>();
List<string> b = new List<string>();
a.AddRange(b);
AddRange的MSDN页面
这保留了列表的顺序,但没有删除任何重复项(Union会这样做)。
这确实会改变列表a。如果你想保留原始列表,那么你应该使用Concat(正如在其他答案中指出的那样):
var newList = a.Concat(b);
只要a不为空,就返回一个IEnumerable。
其他回答
一种方法:List.AddRange()取决于类型?
你可以试试:
List<string> a = new List<string>();
List<string> b = new List<string>();
a.AddRange(b);
AddRange的MSDN页面
这保留了列表的顺序,但没有删除任何重复项(Union会这样做)。
这确实会改变列表a。如果你想保留原始列表,那么你应该使用Concat(正如在其他答案中指出的那样):
var newList = a.Concat(b);
只要a不为空,就返回一个IEnumerable。
我使用的两个选项是:
list1.AddRange(list2);
or
list1.Concat(list2);
然而,我注意到,当我使用递归函数使用AddRange方法时,它经常调用自己,我得到了一个SystemOutOfMemoryException,因为达到了最大维度数。
(消息谷歌翻译后) 数组尺寸超出支持范围。
使用Concat解决了这个问题。
AddRange方法
aList.AddRange( anotherList );
var bigList = new List<int> { 1, 2, 3 }
.Concat(new List<int> { 4, 5, 6 })
.ToList(); /// yields { 1, 2, 3, 4, 5, 6 }