2010-03-17 3 views
3

모두들, 여기에 뭔가 빠져 있어야합니다.VB.NET에서 LINQ 쿼리로 만든 익명 형식의 컬렉션을 반복 처리 할 수 ​​없습니다.

나는 이런 식으로 뭔가 할 수 VB.NET 익명 형식의 주장에 대해 본 모든 LINQ 예 : I 컬렉션을 반복하는 갈 때 (아래 예 참조) 이제

Dim Info As EnumerableRowCollection = pDataSet.Tables(0).AsEnumerable 
Dim Infos = From a In Info _ 
      Select New With { 
          .Prop1 = a("Prop1"), 
          .Prop2 = a("Prop2"), 
          .Prop3 = a("Prop3") } 

는 오류가 발생합니다 즉, "이름"x "는 선언되지 않았습니다.

For Each x in Infos 
... 
Next 

VB.NET이 정보를 정기적으로는 LINQ에 의해 생성 된 익명 형식의 모음이며, 선언 나를 원한다는 것을 이해하지 못하는 것이야"라고 몇 가지 유형으로 x '를. (익명 형식의 목적을 무력화시키지 않겠습니까?) System에 대한 참조를 추가했습니다. .Data.Linq 및 System.Data.DataSetExtensions를 내 프로젝트에 추가합니다. 다음은 수업과 함께 가져 오는 내용입니다.

Imports System.Linq 
Imports System.Linq.Enumerable 
Imports System.Linq.Queryable 
Imports System.Data.Linq 

아이디어가 있으십니까?

+0

VB 버전은 무엇입니까? VB10 (VS2010)에서 작동해야하며 이전 버전에 대해서는 알지 못합니다. –

+0

VS2008. .NET 3.5 – Atari2600

답변

0

Prolly doen't help, 2008 년 12 월 & 2010 년에 나를 위해 작동합니다. 어쩌면 OptionInfer가 필요합니까?

_people.Add(New Person With {.Name = "P1", .Age = 1, .BDay = Now}) 
     _people.Add(New Person With {.Name = "P2", .Age = 2, .BDay = Now}) 
     _people.Add(New Person With {.Name = "P3", .Age = 3, .BDay = Now}) 
     _people.Add(New Person With {.Name = "P4", .Age = 4, .BDay = Now}) 
     Dim infos = From x In _people _ 
        Select New With {.anonName = x.Name, .anonAge = x.Age} 

     For Each anon In infos 
      Debug.Print("anonName=" + anon.anonName + " anonAge=" + anon.anonAge.ToString) 
     Next 
3

당신은 Imports 문 앞에 Option Infer On를 추가해야합니다. 사용 여부에 따라 Option Strict Off이 필요할 수도 있습니다. 이를 통해 VB.NET은 익명 형식을 유추 할 수 있습니다. 나는 그것이 기본입니다

+0

'Option Infer Off '를 지정하면'For Each' 행이 실패하게되지만'Option Strict'도 꺼져 있지 않으면'Dim Infos = ...'행이 실패하게됩니다. –

+0

이것은 나를 미치게했다! 타이! – Joe

1

모든 것이 잘 작동에 나는 내가 그것을 켜면 2,010 대 옵션 완전 추론 끄기, 꺼져에 대 2008 년 20,005 대에서 업그레이드 된 ..

2010 대에 켜져 있고 2008하지만 vs2005에서는 옵션이 아닙니다 !! S