#c# #linq #model-view-controller
#c# #linq #модель-представление-контроллер
Вопрос:
select * from Employees where DataofJoin ='2005-01-01 00:00:00.000'
Я написал этот запрос Linq как
public JsonResult Dif()
{
var ss = Convert.ToDateTime("2001-01-01 00:00:00.000");
var x = (from n in db.Employees
where n.DataofBirth == ss
select n).First();
return new JsonResult { JsonRequestBehavior = JsonRequestBehavior.AllowGet };
}
Но он выдает следующую ошибку:
"An exception of type 'System.InvalidOperationException' occurred in System.Core.dll
but was not handled in user code"
Комментарии:
1. Пожалуйста, покажите нам свой stacktrace
2. Что такое StackTrce
3. Название вопроса полностью вводит в заблуждение, не имеет ничего общего с преобразованием запроса Sql Datetime
4. Я не понимаю, что должен делать ваш код. Вы создаете экземпляр объекта DataTime, выполняете запрос linq, сохраняете результат в x и возвращаете новый JsonResult. Но вы никогда ничему не присваиваете значение x.
Ответ №1:
Насколько я могу понять, эта проблема связана с попыткой получить элемент из пустого объекта.
Потому что вы выполняете вызов .First()
, и запрос возвращает пустой результат. Итак, если вы выполняете запрос obj.First()
для пустого объекта, он выдает исключение. Используйте obj.FirstOrDefault()
, чтобы избежать исключения.
И если Linq не возвращает данные, это проблема, тогда используйте Sql Profiler, чтобы проверить, какой запрос был вызван, или измените фильтр даты соответствующим образом.
Чтобы избежать ошибок, используйте —
var x = (from n in db.Employees
where n.DataofBirth == ss
select n).FirstOrDefault();
Обновить
Для получения правильной даты сделайте что-то вроде этого.
var ss = new DateTime (2005,01,01,0,0,0); //use this date in linq query
Надеюсь, это вам поможет.
Комментарии:
1. вот почему sql принимает нулевые значения, когда я ввожу через sql-запрос типа select * from Employees, где DataofJoin =’2005-01-01 00:00:00.000′, это дало мне Exeact ans
2. поскольку интерпретация date была изменена с Linq на sql, это не так, как вы хотите, чтобы это было. Позвольте мне обновить ответ, чтобы помочь вам.