我正面临一些错误,例如“年,月,日参数描述不可表示的DateTime”。但是当我使用另一个数据库时出现这个问题,否则我写的代码工作正常。
为了检查目的,我将PC日期时间从11月改为12月,而不是相同的代码在不同的数据库工作正常。但我没有得到如何解决这个错误。我已经在崩溃的地方附上了一些代码。
var vi = session.Query<TJERecurMaster>().ToList();
TJEShedulDetail tp = new TJEShedulDetail();
var RecurMasterList = (from v in vi
join jj in session.Query<TJEShedulDetail>()
on v.FMasterID equals jj.TJERecurMaster.FMasterID into jjv
from jv in jjv.DefaultIfEmpty(tp)
where v.FInactive == false && v.TSCCompany == objCompany && v.TSCProperty == objProp
orderby v.FDescription descending
select new RecurMasterNotification
{
TSCompanyID = CompanyID,
JeRecurDetail = v.TJERecurDetails,
FMasterID = v.FMasterID,
FScheduleID = jv.FScheduleID,
FDescription = v.FDescription,
FPostdate = jv.FLastNotification != null ? jv.FLastNotification : (v.FSetDay != 0 ? new DateTime(DateTime.Now.Year, DateTime.Now.Month, Convert.ToInt32(v.FSetDay)) : DateTime.Now),
FAmount = v.TJERecurDetails.Where(P => P.FTranType == "D").Sum(P => P.FAmount)
- v.TJERecurDetails.Where(P => P.FTranType == "C").Sum(P => P.FAmount),
FLastCreated = jv.FLastNotification,
FNotes = v.FNotes,
FJEType = v.FJEType,
FInactive = v.FInactive,
Frequency = jv.FFrequency,
FDateSelection = jv.FDateSelection,
FNextNotification = jv.FNextNotification,
FLastCreatedString = jv.FLastNotification == jv.FNextNotification ? string.Empty : jv.FLastNotification.ToString(),
}).ToList();
此类错误的解决方案是什么?
答案 0 :(得分:2)
我预计此行会发生错误:
FPostdate = jv.FLastNotification != null ? jv.FLastNotification : (v.FSetDay != 0 ? new DateTime(DateTime.Now.Year, DateTime.Now.Month, Convert.ToInt32(v.FSetDay)) : DateTime.Now)
特别是这部分:
new DateTime(DateTime.Now.Year, DateTime.Now.Month, Convert.ToInt32(v.FSetDay))
在这里,您可以创建当前年份和月份的新日期,以及一些v.FSetDay
。但是,如果FSetDay在一个月内(如11月)只有30天,那该怎么办?或者它有另一个非法的值,如&lt; 0或&gt; 31?
您需要决定如何处理。你能忽略高于本月天数的价值吗?这里有一个DaysInMonth方法可以使用。