2009-10-11 18 views
8

¿Cómo convertir/convertir un tipo var a un tipo de lista?C# - var a la lista <T> conversión

Este fragmento de código me da error:

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(); 
} 
+2

'var' no es un tipo, es solo un marcador de posición para el tipo de cualquier expresión que asigne a la variable. En este caso, la expresión de consulta se evalúa como 'IEnumerable '. – Joren

Respuesta

19

Al hacer el LINQ a objetos consulta, se le devolverá el tipo IEnumerable<Student> , puede utilizar el método ToList() para crear un List<T> de un IEnumerable<T>:

var selected = from s in studentCollection 
          select s; 

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

Esta respuesta tiene una explicación mejor que la mía. Esto debe ser aceptado. –

+0

@CMS hola mi amigo. Intenté esta solución en el problema de mi proyecto. No funcionó para mí. ¿Me pueden ayudar con esta pregunta ?: http://stackoverflow.com/questions/32839483/how-can-change-list-type – CoderWho

3

Usted puede llamar a la extensión ToList LINQ Método

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

intente lo siguiente

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

El var en su código de ejemplo se escribe realmente tan IEnumerable<Student>. Si todo lo que está haciendo es la enumeración de ella, no hay necesidad de convertir a una lista:

var selected = from s in studentCollection select s; 

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

Si lo necesita como una lista, el método ToList() de LINQ lo convertirá en uno para usted .

Cuestiones relacionadas