gpt4 book ai didi

c# - 如何使用 C# linq 检查两个具有时间跨度的日期之间的差异是否恰好为 1 年?

转载 作者:太空宇宙 更新时间:2023-11-03 15:05:55 25 4
gpt4 key购买 nike

我正在获取数据列表并使用 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 年时,我才希望它设置为“真”。

谁能帮帮我。我在这里做错了什么?

最佳答案

为了测试这一点,我设置了 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
}

关于c# - 如何使用 C# linq 检查两个具有时间跨度的日期之间的差异是否恰好为 1 年?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43586610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com