[英]How to check if difference between two dates with timespan is exactly 1 year using c# linq?
我正在获取数据列表,并使用linq将其转换为所需的模型。
下面是我的示例代码:
public JsonResult GetDataList([DataSourceRequest] DataSourceRequest request)
{
List<string> errorMessages = new List<string>();
List<Model> ModelList = new List<Model>();
try
{
Services.ServiceClient ServiceClient = new Services.ServiceClient();
ModelList = ServiceClient.GetAllData().Select(x => new Model
{
ID = x.ID,
Name = x.Name,
Description = x.Description,
Category = x.Category,
DtActive = x.DtActive,
DtExpire = x.DtExpire,
IsLive = ((x.DtActive.Value.Date < DateTime.Now.Date) && (x.DtExpire == (x.DtActive.Value.AddYears(1)))) ? true : false
}).ToList();
if (ServiceClient.ResponseStatus == RestClientHelper.ResponseCode.FAILUER)
{
errorMessages.Add(ServiceClient.ResponseMessage);
}
}
catch (Exception ex)
{
errorMessages.Add(ex.Message);
}
if (errorMessages.Count == 0)
{
return Json(ModelList.AsEnumerable().ToDataSourceResult(request));
}
else
{
return Json(new { Data = ModelList.AsEnumerable().ToDataSourceResult(request), Errors = errorMessages });
}
}
因此,一切都很好,但是当我尝试根据条件设置“ IsLive”字段时,总是会出错。
我希望仅当“ DtActive”小于今天的日期并且“ DtExpiry”比“ DtActive”大1年时,才将其设置为“ true”。
谁能帮帮我吗。 我在这里做错了什么?
为了验证这一点,我在一年前的昨天和昨天做了两次约会。 然后像这样比较它们非常有效:
DateTime dtActive = DateTime.Now.AddDays( -1 );//Yesterday
DateTime dtExp = DateTime.Now.AddYears( 1 ).AddDays( -1 );//Last year yesterday
if ( dtActive.Date < DateTime.Now.Date && dtExp.AddYears( -1 ).Date == dtActive.Date )
{
//Success
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.