C # concat two Collection <string>с использованием linq и получение результата Collection <string> - PullRequest
5 голосов
/ 25 августа 2010

Я пытаюсь сделать это:

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

var result = collection1.Concat(collection2);

Но переменная результата имеет тип Enumerable [System.String], тогда как я хочу коллекцию [System.String]

IПробовал кастинг:

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

Но без радости.

Ответы [ 2 ]

13 голосов
/ 25 августа 2010
var result = new Collection<string>(collection1.Concat(collection2).ToList());

По какой-то причине System.Collections.ObjectModel.Collection требует параметр IList для своего конструктора. (Другие коллекции нуждаются только в IEnumerator)

4 голосов
/ 25 августа 2010

Используйте Enumerable.ToList(), так как List<> является ICollection<>.

Например:

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

Если вы имели в виду System.ObjectModel.Collection<>, вам придется пропустить созданный списокв конструктор Collection<>, я не знаю, идеал.

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