2011-01-10 7 views
0

Ich benutze den folgenden Code.Wie zu Sammlungen in asp.net verketten?

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

Egal, welche Funktion GetSecondCollcetion() kehrt (Offensichtlich Gegen Collection<MyClass>) die MyCollection1 immer leer. Bitte Hilfe

Antwort

1

Try (wenn sie nicht ausdrücklich Notwendigkeit MyCollection eine Variable Collection<MyClass> sein:

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

Alternativ

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

Oder wie @Cine sagt:

MyCollection.AddRange(GetSecondCollcetion()); 
+1

Oder wenn die Sammlung es unterstützt (wie List) dann ist AddRange eine gute Funktion – Cine

+1

Es gibt keine implizite Konvertierung, wenn explizite Konvertierung verwendet wird, zeigt es an um 'System.Collections.ObjectModel.Collection'1 [MyClass]' einzugeben. ' –

+0

Ahh .. aber natürlich, da Concat() ein IEnumerable zurückgibt, dann, wie Cine sagt, können Sie immer AddRange() verwenden, wenn es ist ein "mehrstufiger" Aufbau. – veggerby

0

Die Linq-Methode Concat ändert die erste Sammlung nicht, sie gibt eine neue (dritte) Sammlung mit dem Ergebnis zurück: die Kombination der beiden Eingabesammlungen.

So verwenden:

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

Oder AddRange oder eine der anderen Vorschläge verwenden.