2010-08-25 4 views
5

Ich versuche, dies zu tun:C# concat zwei Sammlung <string> mit Linq und bekommen eine Sammlung <string> Ergebnis

var collection1 = new Collection<string> {"one", "two"}; 
var collection2 = new Collection<string> {"three", "four"}; 

var result = collection1.Concat(collection2); 

Aber das Ergebnis Variable ist Enumerable [System.String] geben, während ich eine Sammlung wollen [System.String]

ich habe versucht, Casting:

var all = (Collection<string>) collection1.Concat(collection2); 

aber keine Freude.

Antwort

12
var result = new Collection<string>(collection1.Concat(collection2).ToList()); 

Aus irgendeinem Grund System.Collections.ObjectModel.Collection erfordert eine IList Parameter, um es den Konstruktor. (Die anderen Sammlungen benötigen nur eine IEnumerator)

4

Verwenden Sie Enumerable.ToList(), da List<> eine ist.

Z. B .:

IList list = a.Concat(b).ToList() 

Wenn Sie gemeint System.ObjectModel.Collection<> dann werden Sie die erstellte Liste in den Konstruktor von Collection<> passieren müssen, nicht ideal weiß ich.

var collection = new System.ObjectModel.Collection<string>(a.Concat(b).ToList()); 
Verwandte Themen