2011-07-04 2 views
0

다음은 내가 과정의 목록을 달성하기 위해 얻을 코드 :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 + Course]] ' 을 입력하여 'System.Collections.Generic.IEnumerable`1 [WorkMateLib.CourseNameSpace.CoursesLib + Course] '을 입력하십시오.

제발 이해 좀 도와주세요. 고맙습니다.

답변

2

이것은 동등해야합니다. 직접 목록을 만들 필요는 없습니다.

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

메르 카도 남자 당신은 정말로 흔들립니다. 도와 줘서 고맙다. 오래 동안 사전 형식으로 작업 해 왔으며 최근 Linq를 살펴보기 시작했습니다. 코드는 더 나은 관점에서 사전을 사용하는 것을 이해하는데 도움이됩니다. 고마워, 이제 파일에서 더 많은 낭비 코드를 제거 할 수있다. :디 – surpavan