2013-10-08 4 views
2
내가 LINQ에 대한 몇 가지 참조를 찾으려고

동적 강한 유형을 추가 정적 I이 예제와 같이 내가 만드는 그것의 가능한 경우에 관심이 이제LINQ 및 동적 강력한 유형

 var rowColl = _data.AsEnumerable(); 
     var json = (from r in rowColl 
        select new 
        { 
         name = r.Field<string>("name"), 
         id = r.Field<int>("id"), 
        }).ToList(); 

"이름" 및 "id"동적 정보를 사용할 때 DataTable "_data"에서 사용할 수있는 추가 된 있지만이 간단한 솔루션을 생각할 수있는이 모든 참조를 찾을 수 없습니다

+0

Nope. 컴파일러는 컴파일 할 때 익명의 클래스를 생성합니다. 런타임에 새로운 유형을 만들 수 있습니다. 'Reflection.Emit' 네임 스페이스를 보라. – sircodesalot

+0

그리고 단순한 해결책이 아니기 때문에 나는이 문제가있는 첫 번째 사람이 아니라고 확신한다. –

+0

'Reflection.Emit'은 잘하기 위해 어떤 연습을해야한다. 단호히 초보자가 아닙니다. – sircodesalot

답변

0

"var"사용하지 않는 것이 좋습니다 가능한 경우 귀하의 유형. rowColl은 IEnumerable 유형이 <이고 DataRow가 > 인 것 같습니다. 그렇다면 DataRow 클래스에서 사용할 수있는 것을 살펴볼 것입니다 (msdn documentation 참조).

rowColl이 실제로 IEnumerable 인 경우 <DataRow> ... 열이 항상 동일한 순서로있을 경우 select 문에서 r [0] 및 r [1]과 같은 작업을 수행 할 수 있습니다. 이 유형의 안전을 위해 당신을 불평하는 경우 즉

var json = (from r in rowColl 
      select new 
      { 
       name = r[0], // Where 0 is the index of the "name" column 
       id = r[1], 
      }).ToList(); 

, 당신은 int로 문자열을 캐스팅하고 대신 컬럼에로 .toString() 확장을 사용하는 int.Parse()를 사용할 수 있습니다.

+0

Not 질문과 관련된 –