Добавить коллекцию объектов в другую коллекцию объектов без итерации - PullRequest
5 голосов
/ 29 февраля 2012

У меня есть коллекция объектов objcol1 (пример Коллекция городов в государстве) и другая коллекция объектов objcol2 (пример коллекция городов в стране). Теперь я запрашиваю objcol1 и хочу добавить его в objcol2. Я могу сделать это, перебирая objcol1 и добавляя по одному к objcol2, но могу ли я напрямую добавить objcol1 к objcol2, как objcol2.add (objcol1);

Может кто-нибудь сказать мне, возможно ли это без итерации? Если да, пожалуйста, объясните мне процесс

Ответы [ 4 ]

15 голосов
/ 29 февраля 2012

Вы можете использовать метод расширения Enumerable.Concat:

objcol1 = objcol1.Concat(objcol2)

Я уверен, что под покровом где-то это фактически повторяется, но вам не нужно писать кодчтобы сделать это.

ПРИМЕЧАНИЕ. Это будет работать только в том случае, если ваши City объекты совпадают, в качестве альтернативы вы можете использовать Select для сопоставления объектов.

9 голосов
/ 29 февраля 2012

Вы также можете использовать AddRange списка. См. документацию для получения дополнительной информации.

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"
3 голосов
/ 29 февраля 2012

Да, это возможно в зависимости от вашего варианта использования. Если вас не волнует, что такое тип "collection", вы можете использовать команду linq Concat для создания нового перечислимого, которое при повторении будет включать элементы из обеих коллекций.

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

var concatenated = collection1.Concat(collection2);

Если, с другой стороны, вам нужно фактически вставить элементы в существующую коллекцию, вам нужно будет выполнить итерацию.

1 голос
/ 29 февраля 2012

На самом деле, вам не нужен новый var:

collection1.AddRange(collection2);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...