C # - var в список <T>преобразование - PullRequest
9 голосов
/ 11 октября 2009

Как преобразовать / преобразовать тип var в тип List?

Этот фрагмент кода дает мне ошибку:

List<Student> studentCollection = Student.Get();

var selected = from s in studentCollection
                           select s;

List<Student> selectedCollection = (List<Student>)selected;
foreach (Student s in selectedCollection)
{
    s.Show();
}

Ответы [ 4 ]

21 голосов
/ 11 октября 2009

Когда вы выполняете запрос Linq to Objects, он возвращает вам тип IEnumerable<Student>, вы можете использовать метод ToList() для создания List<T> из IEnumerable<T>:

var selected = from s in studentCollection
                           select s;

List<Student> selectedCollection = selected.ToList();
8 голосов
/ 11 октября 2009

var в вашем примере кода фактически напечатано как IEnumerable<Student>. Если все, что вы делаете, перечисляет его, нет необходимости преобразовывать его в список :

var selected = from s in studentCollection select s;

foreach (Student s in selected)
{
    s.Show();
}

Если он вам нужен как список, метод ToList () из Linq преобразует его в один для вас.

3 голосов
/ 11 октября 2009

Вы можете вызвать метод расширения ToList LINQ

List<Student> selectedCollection = selected.ToList<Student>();
foreach (Student s in selectedCollection)
{
    s.Show();
}
1 голос
/ 11 октября 2009

Попробуйте следующее

List<Student> selectedCollection = selected.ToList();
...