2009-10-11 280 views
8

如何将var类型转换/转换为List类型?C# - var到List <T>转换

这段代码是给我的错误:

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'不是一个类型,它只是您分配给该变量的任何表达式类型的占位符。在这种情况下,查询表达式的计算结果为“IEnumerable ”。 – Joren 2009-10-11 17:58:41

回答

19

当你做对LINQ到对象的查询,它会回报你的类型IEnumerable<Student> ,您可以使用ToList()方法创建来自IEnumerable<T>List<T>

var selected = from s in studentCollection 
          select s; 

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

这个答案比我自己有更好的解释。这应该被接受。 – 2009-10-11 17:55:58

+0

@CMS你好我的朋友。我在我的项目的问题中尝试了这个解决方案。它不适合我。你能帮我解决这个问题吗?: http://stackoverflow.com/questions/32839483/how-can-change-list-type – CoderWho 2015-09-29 10:40:45

3

可以调用ToList LINQ扩展方法

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

请尝试以下

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

在你的示例代码var实际上是类型为IEnumerable<Student>如果你正在做的是枚举它,就没有必要将其转换为一个列表

var selected = from s in studentCollection select s; 

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

如果您确实需要它作为一个清单,从LINQ的该ToList()方法将其转换为一个适合你。

相关问题