2016-07-29 4 views
1

나는 방법은 here을 설명하여 사전에 데이터 테이블을 변환하기 위해 노력하고있어,하지만 난 오류데이터 테이블 todictionary 여러 열

암시 적으로 변환 할 수 없습니다 유형 System.Collections.Generic.Dictionary> '에를 얻을 'System.Collections.Generic.Dictionary``.

link 내가 필요하다, 여러 없습니다 도움이 있지만, 단 하나의 값은 사전에 당겨진다.

도움 주셔서 감사합니다. new MCEAV()이를하는 동안

dctGREEKS = DATActx.MONTECARLO_EAVs.Select(Z => 
           new MCEAV() 
           { 
            ID = Z.ID, 
            BOOK_ID = Z.BOOK_ID, 
            DATA = Z.DATA 
           }).ToDictionary(Z => Z.ID); 

그래서 new { Z.ID, Z.BOOK_ID, Z.DATA}가 컴파일러에 의해 생성 된 익명 형식의 인스턴스는 다음과 같습니다

public class MCEAV 
{ 
    public int ID { get; set; } 
    public int BOOK_ID { get; set; } 
    public double DATA { get; set; } 
} 

Dictionary<int, MCEAV> dctGREEKS = new Dictionary<int, MCEAV>(); 
dctGREEKS = DATActx.MONTECARLO_EAVs.Select(Z => new { Z.ID, Z.BOOK_ID, Z.DATA}).ToDictionary(Z => Z.ID); 
+0

당신은 1 개 값이있는 경우'당신은 사전에 하나 개의 값을 얻을 것이다 MONTECARLO_EAVs'. 간단합니다. – user3185569

답변

2

당신은 익명의 유형 다른 new를 사용할 때 클래스의 이름을 지정해야합니다 사전에 원하는 유형 인 MCEAV 유형의 인스턴스입니다.

+0

고맙습니다! 이것이 나를 미치게 만들었고 코드를 작동시키는 방법을 실행했습니다. – Zeus

2

코드에 따르면, 다음과 같은 것을 원합니다.

var result = dt.AsEnumerable() 
     .ToDictionary(x=>x.Field<int>("ID"), 
         x=> new MCEAV() 
         { 
          ID = x.Field<int>("ID"), 
          BOOK_ID = x.Field<int>("BOOK_ID"), 
          DATA = x.Field<double>("DATA") 

         }); 

확인이 Example

+0

감사합니다. 하리, 이것도 작동합니다. – Zeus