我试图获取两个日期之间的差额,但出现此错误:
无法转换类型'int?'到“ System.TimeSpan”
然后,我尝试使用Convert.ToInt32()
或Int32.Parse()
,但仍然出现相同的错误。
谁能帮助我或为我指明正确的方向?
ViewModel:
public class RMACLOSE
{
public TimeSpan? diff { get; set; }
}
控制器:
var list = from RH in RMA_History
select new RMACLOSE
{
// Cannot Convert type 'int?' to 'System.TimeSpan?'
diff = DbFunctions.DiffDays(RH.EndDate, RH.StartDate)
}
RH.EndDate
(DateTime
):2018-11-15 12:15:00.000
RH.StartDate
(DateTime
):2018-05-24 15:43:00.000
差异:175天
答案 0 :(得分:1)
从错误消息中可以明显看出,DbFunctions.DiffDays()
返回了一个int?
(大概表示以天为单位的时差)。
因此,您需要执行以下操作将其转换为TimeSpan?
:
var days = DbFunctions.DiffDays();
if (days != null)
diff = TimeSpan.FromDays(days.Value);
else
diff = null;
答案 1 :(得分:1)
我认为您需要两个日期均值const UserLoggedIn = (req, res, next) => {
if (req.user) next ();
else res.redirect("/login")
}
const UserNotLoggedIn = (req, res, next) => {
if (!req.user) next();
else res.redirect("/home")
}
和EndDate
之间的差,即StartDate
,
所以为什么不能在175
类之内使用int?
类型的diff
属性,如
RMACLOSE
可能是您的错误已解决,然后您不需要任何类型转换,而只是使用LINQ查询,就像这样
public class RMACLOSE
{
public int? diff { get; set; }
}
select new RMACLOSE
{
diff = DbFunctions.DiffDays(RH.EndDate, RH.StartDate)
}
返回DbFunctions.DiffDays
,因此它与您的int?
属性类型匹配,因此不会出现任何错误。