Datatable to dictionary 几列
Datatable todictionary several columns
我正在尝试使用 here 中描述的方法将数据表转换为字典,但出现错误
Cannot implicitly convert type
System.Collections.Generic.Dictionary>' to
'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);
使用new
时需要指定class的名称,否则为匿名类型:
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
的实例,这正是您想要的字典。
根据你的代码,我猜你想要这样的东西。
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
我正在尝试使用 here 中描述的方法将数据表转换为字典,但出现错误
Cannot implicitly convert type System.Collections.Generic.Dictionary>' to '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);
使用new
时需要指定class的名称,否则为匿名类型:
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
的实例,这正是您想要的字典。
根据你的代码,我猜你想要这样的东西。
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