2010-06-24 39 views
2

我遇到这个问题LINQ在VB InvalidCastException的

System.InvalidCastException:无法转换类型的对象 'System.Data.Linq.DataQuery 1[Student]' to type 'System.Collections.Generic.List 1 [学生]'

当调试这个函数:

Public Shared Function SearchStudent(ByVal firstname As String) As List(Of Student) 

    Dim db As New DemoDataContext() 
    Dim query = From st In db.Students _ 
       Where (st.FirstName.StartsWith(firstname)) _ 
       Select st 

    Return CType(query, List(Of Student)) 


End Function 

我的项目属性设置:选择明确的ON和Option严格ON

我想从查询返回学生的列表。谁能帮我?谢谢。

回答

3
Dim query = (From st In db.Students _ 
      Where (st.FirstName.StartsWith(firstname)) _ 
      Select st).ToList() 
+0

query.ToList(Of Student)也会做这个工作。 – 2010-06-24 04:43:39

+0

我在发布此问题之前尝试了该选项。但是我得到这个错误扩展方法'Public Function ToList()As System.Collections.Generic.List(Of TSource)''System.Linq.Enumerable''中定义的不是通用的(或没有自由类型参数),所以不能有类型参数 – Narazana 2010-06-24 05:57:49

+0

.ToList()?我认为你可以省略类型参数,因为它可以从使用中推断出来。 – 2010-06-24 06:11:44