#c# #linq
#c# #linq
Вопрос:
Указанное приведение недопустимо ошибка в строке: выберите новый файл.Модели.FileDetail() . DTTT в коде — это datatable , FileDetial — это класс в модели, который имеет Filename , Dt, receivedcount,параметры состояния. Я проверил все типы данных полей, и они верны. Не уверен, почему я получаю эту ошибку.
return (from row in DTTT.AsEnumerable()
select new File.Models.FileDetail()
{
Filename = row.Field<string>("name"),
Dt = row.Field<DateTime?>("Dt"),
ReceivedCount = row.Field<int?>("count"),
status = row.Field<string>("status")
}
).ToList();
Комментарии:
1. можно
Dt
ли обнулять иReceivedCount
обнулять?2. Каков их соответствующий DbType —
Filename,Dt,receivedcount,status
, один из них не является типом, который вы пытаетесь ввести3. Какой тип возвращается из метода?
4. Вы должны добавить сведения об исключении, которые вы получаете
5. @MrinalKamboj вы правы, мой DT DbType был char, и в модели я объявил как Datetime. Теперь это работает.
Ответ №1:
Вы должны иметь возможность привести его как TimeSpan
:
Dt = row.Field<TimeSpan>("Dt");
или
Dt = (DateTime)(row.Field<DateTime>("Dt") == DBNull.Value ? DateTime.MinValue :row.Field<DateTime>("Dt"));
Ответ №2:
Dbtype моего поля «DT» равно char, а поле свойства ReceivedCount объявлено как Datetime в моей модели. Таким образом, возникло недопустимое исключение приведения. изменение типа данных моего поля модели на string сработало. Спасибо всем.