Datatable todictionary несколько столбцов
Я пытаюсь преобразовать данные в словарь, используя метод, описанный здесь, но я получаю ошибку
Не удается неявно преобразовать тип System.Collections.Generic.Dictionary>'в'System.Collections.Generic.Dictionary``.
Эта ссылка помогла, но в словарь вставлено только одно значение, а не несколько, что мне и нужно.
Спасибо за любую помощь.
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);
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
что вы хотите для своего словаря.
Исходя из вашего кода, я думаю, вы хотите что-то вроде этого.
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