2016-07-29 29 views
1

我想一個數據錶轉換爲使用方法描述here一本字典,但我得到一個錯誤數據表todictionary幾列

無法隱式轉換類型 System.Collections.Generic.Dictionary>」來 'System.Collections.Generic.Dictionary``。

link幫助,但只有一個值被拉入字典,而不是幾個這是我所需要的。

感謝您的任何幫助。

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否則當它是一個匿名類型來指定類的名稱:

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}是由編譯器創建一個匿名類型的實例,而new MCEAV()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