来自Ilist<>的Linq查询转换列出<>

时间:2016-11-24 13:30:04

标签: c# asp.net linq

我收到IList<>个数据并将其存储起来:

 IList<Student> StudentList = DataKilde.Studenter();

现在我想把它们读成List<Student>

List<Student> studentWhere3 = StudentList.Where(x=> x.StudentId > 2 && x.StudentId < 8).ToList(); 

这是有效的... becoz我认为.ToList将其转换为Ilist<>List<>

我的问题是,当我这样做时:

List<Student> studentWhere5 = from s in StudentList
                              where s.StudentId==2
                              select s

我收到转换错误并尝试过这些:

from s in (List<Student>)StudentList

from s in StudentList as List<Student>

但它不起作用..我不明白为什么?

1 个答案:

答案 0 :(得分:5)

那是因为select s返回IQueryable<Student>,它不会隐式或显式转换为List<Student>,因为两者之间没有继承。

您需要将查询结果实现到列表中:

(from s in StudentList
where s.StudentId==2
select s).ToList();

这将获取源集合(s)中的所有元素,并将它们存储在List<Student>中,该IList<Student>实现new PeriodicalExecuter(function(pe) { location.reload(true); }, 10);