2010-08-25 9 views
5

Je suis en train de le faire:C# concat deux Collection <string> LINQ et obtenir une collection <string> résultat

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

var result = collection1.Concat(collection2); 

Mais la variable de résultat est de type Enumerable [System.String] , alors que je veux une collection [System.String]

J'ai essayé casting:

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

Mais pas de joie.

Répondre

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

Pour une raison System.Collections.ObjectModel.Collection nécessite un paramètre IList à son constructeur. (Les autres collections ont seulement besoin d'un IEnumerator)

4

Utilisez Enumerable.ToList(), comme List<> est un ICollection<>.

.: par exemple

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

Si vous System.ObjectModel.Collection<> signifiait alors vous devrez passer la liste créée dans le constructeur de Collection<>, je sais pas idéal.

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