C# 合并/追加IEnumerable对象

C# 合并/追加IEnumerable对象,c#,linq,ienumerable,C#,Linq,Ienumerable,在上面的代码中,我想将集合1和集合2追加到集合3 下面的语句返回了一个错误,我该怎么做呢 Assembly MyAssembly = null; MyAssembly = Assembly.LoadFrom(Path.Combine(APath, @"A.B.Database.dll")); System.Type MyElement = MyAssembly.GetType("A.B.Database.C"); object MyElementAr = MyAss

在上面的代码中,我想将集合1和集合2追加到集合3

下面的语句返回了一个错误,我该怎么做呢

Assembly MyAssembly = null; 
    MyAssembly = Assembly.LoadFrom(Path.Combine(APath, @"A.B.Database.dll"));
    System.Type MyElement  = MyAssembly.GetType("A.B.Database.C"); 
    object MyElementAr = MyAssembly.GetType("A.B.Database.D");                       
    object MyElementAr2 = MyAssembly.GetType("A.B.Database.E");                       

        var collection1 = (IEnumerable)MyElementAr;
        var collection2 = (IEnumerable)MyElementAr2;
此外,concat方法不适用于以下情况

var collection3 = collection1 + collection 2;

正如@pwas在评论中提到的,答案是

var collection3 =  collection1.concat(collection 2); // concat not available.
var coll3=coll1.Cast().Concat(coll2.Cast());

Try:
var coll3=coll1.Cast().Concat(coll2.Cast())强制转换可能是一种方法。但是要注意可能引发异常的不兼容类型。在@pwas示例中,对“coll”使用公共基类型。此外,“Concat”是大写字母,需要System.Linq。我认为您应该包括
System.Linq
名称空间,并使用
Concat
-方法(camelcase),因为
collection1
已经是
IEnumerable
。我不明白您想要做什么
MyElementAr
是一种
类型
,您不能将其强制转换为
IEnumerable
。您是否只想创建一个包含
MyElementAr
MyElementAr2
的集合?您实际上想在这里做什么?您按名称获得了三种类型,但由于没有任何
IEnumerable
对象,因此不清楚接下来要做什么。。。其中最重要的一点是,
MyElement
不再被使用……这有点毫无意义。为什么不干脆
new[]{MyElementAr,MyElementAr2}
?这段代码是如何工作的,您不能将类型强制转换为IEnumerable。也许您没有得到编译时错误,但它肯定会在运行时爆发。
var coll3 = coll1.Cast<object>().Concat(coll2.Cast<object>());