2011-01-10 2 views
0

Я использую следующий код.Как объединить коллекции в asp.net?

Collection<MyClass> MyCollection1 = new Collection<MyClass>(); MyCollection.Concat(GetSecondCollcetion());

Независимо от того, какая функция возвращает GetSecondCollcetion() (Очевидно, объект Collection<MyClass>) MyCollection1 Всегда Empty. Пожалуйста, помогите

ответ

1

Try (если вы явно не нужду MyCollection быть переменной Collection<MyClass>:

var MyCollection1 = new Collection<MyClass>().Concat(GetSecondCollcetion()); 

Альтернативно

Collection<MyClass> MyCollection1 = new Collection<MyClass>(GetSecondCollection()); 

Или, как говорит @Cine:

MyCollection.AddRange(GetSecondCollcetion()); 
+1

Или, если коллекция поддерживает его (например, List), то AddRange - хорошая функция. – Cine

+1

Нет явного неявного преобразования, когда используется явное преобразование, оно показывает «Невозможно лить объект типа» d__71'1 [MyClass] ' для ввода «System.Collections.ObjectModel.Collection'1 [MyClass]». ' –

+0

Ahh .. но, конечно, поскольку Concat() возвращает IEnumerable , тогда, как говорит Cine, вы всегда можете использовать AddRange(), если это «многоступенчатое» наращивание. – veggerby

0

Метод Linq Concat не меняет первый набор, он возвращает новую (третью) коллекцию с результатом: комбинацию двух входных коллекций.

Так используйте:

MyCollection1 = MyCollection1.Concat(GetSecondCollcetion()).ToList(); 

Или используйте AddRange или один из других предложений.

Смежные вопросы