2014-09-26 69 views
-2
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; 

在上面的代碼中,我想追加集合1和集合2到collection3。合併/附加IEnumerable對象

我該如何去解決它,因爲下面的語句返回錯誤。

var collection3 = collection1 + collection 2; 

另外concat方法不適用於下面。

var collection3 = collection1.concat(collection 2); // concat not available. 
+1

嘗試:'VAR coll3 = coll1.Cast ().Concat(coll2.Cast ());' – 2014-09-26 08:49:26

+1

演員陣容可能是要走的路。但要小心可能會引發異常的不兼容類型。在@pwas示例中使用「coll」的通用基本類型。另外,「Concat」是大寫字母,並且需要System.Linq。 – AFract 2014-09-26 08:52:25

+1

我想你應該包含'System.Linq'命名空間並使用'Concat'-方法(camelcase),因爲'collection1'已經是'IEnumerable'了。 – Caramiriel 2014-09-26 08:52:26

回答

-4

正如在註釋@pwas提到,答案是

var coll3 = coll1.Cast<object>().Concat(coll2.Cast<object>()); 
+3

這是沒有意義的。爲什麼不只是'new [] {MyElementAr,MyElementAr2}'?而且該代碼如何工作,您無法將Type轉換爲IEnumerable。也許你沒有得到一個編譯時錯誤,但肯定會在運行時崩潰。 – 2014-09-26 09:11:30