EntityFunctions.CreateDateTime问题与linq到实体的闰年

Pra*_*sad 5 asp.net-mvc linq-to-entities leap-year entity-functions

当我的数据库中有闰年时(例如:2012年2月29日).EntityFunctions.CreateDateTime函数抛出System.Data.SqlClient.SqlException: Conversion failed when converting date and/or time from character string.

我的代码在我的asp.net mvc(C#)应用程序中如下:

from u in _entities.tt_Users
let _start_date = u.Start_Date
let _startDate = _start_date.Day
let _startmonth = _start_date.Month
let _startyear = _start_date.Year
let _starthour = u.Start_Time.Value.Hours
let _startminutes = u.Start_Time.Value.Minutes
let _startseconds = u.Start_Time.Value.Seconds
let _startDateWithTime = EntityFunctions.CreateDateTime(_startyear, _startmonth, _startDate, _starthour, _startminutes, _startseconds)
let _startDateWithZeroTime = EntityFunctions.CreateDateTime(_startyear, _startmonth, _startDate, 0, 0, 0)
let _start_datetime = u.Is_Include_Time ? _startDateWithZeroTime : _startDateWithTime
let _end_date = u.End_Date
let _endDate = _end_date.Day
let _endmonth = _end_date.Month
let _endyear = _end_date.Year
let _endhour = u.End_Time.Value.Hours
let _endminutes = u.End_Time.Value.Minutes
let _endseconds = u.End_Time.Value.Seconds
let _endDateWithTime = EntityFunctions.CreateDateTime(_endyear, _endmonth, _endDate, _endhour, _endminutes, _endseconds)
let _endDateWithZeroTime = EntityFunctions.CreateDateTime(_endyear, _endmonth, _endDate, 0, 0, 0)
let _end_datetime = u.Is_Include_Time ? _endDateWithZeroTime : _endDateWithTime
let _cur_Start_date = u.Is_Include_Time ? _userStartDate : _gMTStartDate
let _cur_End_date = u.Is_Include_Time ? _userEndDate : _gMTEndDate
where u.User_Id == 1 && !u.Is_Deleted
&& _start_datetime >= _cur_Start_date && _end_datetime <= _cur_End_date
select new
{
  u.User_id,
  u.User_Name,
  u.Login_Name,
  u.Email_Address
};
Run Code Online (Sandbox Code Playgroud)

这里_userStartDate,_userEndDate,_gMTStartDate和_gMTEndDate是我函数的参数.

如果列"Is_Include_Time"为true,那么我还必须从表中包含TimeSpan.但是对于闰年它抛出的错误.

有什么建议?

小智 0

尝试按照我的建议在linq 表达式之外使用声明的变量