Linq查询异常/错误

时间:2011-07-04 20:48:51

标签: vb.net linq

以下是我获得课程列表的代码:

Dim Result As New List(Of WorkMateLib.CourseNameSpace.CoursesLib.Course)
    For Each cat As WorkMateLib.CourseNameSpace.CoursesLib.Category In Courses.CoursesOfferedMAIN.Values
        For Each c As WorkMateLib.CourseNameSpace.CoursesLib.Course In cat.Courses.Values
            Result.Add(c)
        Next
    Next

它工作正常。但是我试图尝试用linq做同样的事情,代码是:

Result.AddRange(From k As WorkMateLib.CourseNameSpace.CoursesLib.Category In Courses.CoursesOfferedMAIN.Values Where Not k.CategoryName = "" Select k.Courses.Values.ToList())

但是抛出的错误如下:

  

无法投射类型的对象   'WhereSelectEnumerableIterator 2[WorkMateLib.CourseNameSpace.CoursesLib+Category,System.Collections.Generic.List 1 [WorkMateLib.CourseNameSpace.CoursesLib +课程]]'   输入   'System.Collections.Generic.IEnumerable`1 [WorkMateLib.CourseNameSpace.CoursesLib +课程]'。

你可以帮我更好地理解它。谢谢。

1 个答案:

答案 0 :(得分:2)

这应该是等同的。请注意,您无需自己创建列表。

Dim Result = Courses.CoursesOfferedMAIN.Values                    _
                    .SelectMany(Function(cat) cat.Courses.Values) _
                    .ToList