我正在尝试使用here描述的方法将数据表转换为字典,但是我收到错误
无法隐式转换类型 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 :(得分: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
的实例,这是你想要的字典。
答案 1 :(得分: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