我正在获取数据列表并使用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”。
任何人都可以帮助我。我在这里做错了什么?
答案 0 :(得分:0)
为了测试这个,我在一年前的昨天和昨天做了2个日期。然后比较它们就像这样完美地运作:
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
}