2012-02-29 185 views
5

我有一個對象objcol1(示例中的城市集合)和另一個對象集合objcol2(示例中的城市集合)的集合。現在我正在查詢objcol1,我想將它添加到objcol2。我可以通過迭代objcol1並逐個添加到objcol2來完成此操作,但是可以直接將objcol1添加到objcol2中,如 objcol2.add(objcol1);將對象集合添加到另一個對象集合而不會迭代

任何人都可以告訴我是否有可能沒有迭代?如果是,請給我解釋一下過程

+0

的可能的複製[如何枚舉集合追加到在C#中現有列表(http://stackoverflow.com/questions/4067223/how-to-append-enumerable-collection-to-an-existing -list-in-c-sharp) – Fragment

回答

13

你可以使用Enumerable.Concat擴展方法:

objcol1 = objcol1.Concat(objcol2) 

我蓋的地方,它實際上迭代下敢肯定,但你不會需要編寫代碼來執行它。

注意:只有在您的City對象相同時才能使用,或者您可以使用Select來映射對象。

+0

謝謝你的工作,因爲我需要。 – Deepak

+0

可能是因爲你沒有使用objcol1 = objcol1.Concat(objcol2); – Jayanga

+0

不公平,我認爲這是一個很好的答案+1 – Tx3

2

是的,這可能取決於您的使用情況。如果您不關心「集合」類型是什麼,那麼您可以使用linq Concat命令來創建一個新的枚舉,該枚舉在迭代時將包含來自這兩個集合的項目。

var collection1 = new List<int> { 1, 2, 3 }; 
var collection2 = new [] { 4, 5, 6}; 

var concatenated = collection1.Concat(collection2); 

另一方面,如果您需要將項目實際插入到現有集合中,則需要進行迭代。

1

其實,你並不需要一個新變種:

collection1.AddRange(collection2); 
7

您也可以使用列表的AddRange。有關更多信息,請參閱documentation

var a = new List<string> { "1", "2" }; 
var b = new List<string> { "3", "4" }; 
a.AddRange(b); 

// a would contain "1", "2", "3" and "4" 
相關問題