2012-02-29 2 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" 
Смежные вопросы