C# 合并/追加IEnumerable对象
在上面的代码中,我想将集合1和集合2追加到集合3 下面的语句返回了一个错误,我该怎么做呢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
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>());