Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在C中将两个StringCollection合并为一个#_C#_Linq_Stringcollection - Fatal编程技术网

C# 如何在C中将两个StringCollection合并为一个#

C# 如何在C中将两个StringCollection合并为一个#,c#,linq,stringcollection,C#,Linq,Stringcollection,如何在C中合并两个StringCollection# 您可以强制转换为数组并使用,请注意,这也将删除重复项 var resultCollection = collection1.Cast<string>().Union(collection2.Cast<string>()) var resultCollection=collection1.Cast().Union(collection2.Cast()) 您可以将所有内容复制到如下数组中 var collecti

如何在C中合并两个StringCollection#


您可以强制转换为数组并使用,请注意,这也将删除重复项

var resultCollection = collection1.Cast<string>().Union(collection2.Cast<string>())
var resultCollection=collection1.Cast().Union(collection2.Cast())
您可以将所有内容复制到如下数组中

    var collection1 = new StringCollection() { "AA", "BB", "CC" };
    var collection2 = new StringCollection() { "DD", "EE", "FF" };

    var array = new string[collection2.Count + collection1.Count];

    collection1.CopyTo(array, 0);
    collection2.CopyTo(array, collection1.Count);

您可以占用列表而不是StringCollection

        var collection1 = new List<string>() { "AA", "BB", "CC" };
        var collection2 = new List<string>() { "DD", "EE", "FF" };
        var resultCollection = collection1.Concat(collection2).ToList();
var collection1=newlist(){“AA”、“BB”、“CC”};
var collection2=新列表(){“DD”、“EE”、“FF”};
var resultCollection=collection1.Concat(collection2.ToList();

如果您仍然需要字符串集合,可以使用
AddRange

var collection1=newstringcollection(){“AA”、“BB”、“CC”};
var collection2=newstringcollection(){“DD”、“EE”、“FF”};
var resultCollection=new StringCollection();
resultCollection.AddRange(collection1.Cast.ToArray());
resultCollection.AddRange(collection2.Cast.ToArray());

似乎奇怪的是,
StringCollection
不直接支持添加其他
StringCollection
s。如果效率是一个问题,可能比这里的答案更有效,如果您在
StringCollection
中仍然需要它,您可以使用生成的数组,并使用
AddRange
将该字符串数组添加到新的
StringCollection

中,我认为需要强制转换集合变量。不,它没有“联合”扩展。@MarkMacneilBikeio
var resultCollection=collection1.Cast().Union(collection2.Cast())
@LarsTech感谢您注意到了这一点,更新了我的答案您需要强制执行,因为
StringCollection
实现了
IEnumerable
,而不是
IEnumerable
。为什么使用“object”?“可能更有效”->它肯定更有效。每个集合上有一个循环,而答案中有两个循环。另外,为什么不在现有集合之一上调用
AddRange
?@CamiloTerevinto这里不清楚字符串集合的目的是什么。如果对现有集合调用
AddRange
,它将修改该集合,而不是为您提供新集合。这个问题并不意味着可以对其中一个原始集合进行变异,因此这会在不更改原始集合的情况下将两个集合合并为一个新集合。StringCollection是一种过时的类型,您根本不应该使用它。我同意,几乎任何像List这样的通用集合都会更好,我以前从来没有听说过StringCollection,但是如果它是一种过时的类型,为什么在.NET 5.0RC1中仍然支持它?它只是为了支持遗留代码而保留吗?可能Mark正在处理旧代码,需要继续使用StringCollection。@TJRockefeller如果您在.NET世界中工作,您应该知道所有代码都是可追溯到.NET 1.0的。因此,只要微软不改变这一决定,最终淘汰这么多,它仍然会存在****:)
        var collection1 = new List<string>() { "AA", "BB", "CC" };
        var collection2 = new List<string>() { "DD", "EE", "FF" };
        var resultCollection = collection1.Concat(collection2).ToList();