.NET LINQ foreach DATETIME не может преобразовать строку в исключение DateTime

#.net #linq #exception #datetime #format

#.net #linq #исключение #datetime #форматировать

Вопрос:

У меня есть таблица данных SQL, которая содержит поле ДАТЫ или DATETIME

здесь приведена инструкция LINQ, просто чтобы получить основную идею

 var testLinq = from t in DBDataContext.Certificates select t;

    foreach (var t in testLinq)
    {
     ....
    }
  

Для краткости опустил код в {..}.
НО всякий раз, когда ‘foreach’ пытается использовать t, я получаю это исключение

«Входная строка была в неправильном формате». При преобразовании строки в DateTime проанализируйте строку, чтобы получить дату, прежде чем вводить каждую переменную в объект DateTime

Как я могу это сделать, когда это обрабатывается Linq внутри цикла foreach?

Комментарии:

1. Я думаю, вам придется предоставить немного больше кода. Как вы ссылаетесь на свойство DateTime?

2. Спасибо, это исключение возникает, даже если вы даже не пытаетесь ссылаться на свойство. Похоже, что это происходит при сборке цикла foreach. Я пытался использовать поля SQL Date amp; DateTime и не забыл повторно просмотреть мой DataContext в Visual Studio…

Ответ №1:

Прежде всего, сделайте это следующим образом

 var testLinq = (from t in DBDataContext.Certificates select t).ToList();

foreach (var t in testLinq)
{
 ....
}
  

и преобразуйте вашу строку в в datetime следующим образом

 DateTime dt = DateTime.Parse("yourString")
  

если это не работает,

 DateTime dt = new DateTime(year,month,day);
  

и получите ваши значения года, месяца, дня с помощью Convert.ToInt32(yourString.Подстрока (0,4)) и т. Д