c# - 访问 Any() 中的前一个元素?LINQ C#
问题描述
我有一个时期的日期列表。在此列表的 1 个元素中,有两个变量:startDate 和 endDate。我面临的问题是 endDate 代表前一个元素的 endDate , startDate 代表当前元素的开始日期。
最初我的支票是这样的:
if(dateList.Any(d => DateTime.Now > d.startDate && DateTime.Now < d.endDate))
{
// Do something
}
有没有办法访问这个Any()
函数中的前一个元素?
解决方案
.Any() 方法在这里实际上只是一个花哨的缩写:
foreach (var date in dateList)
{
if (DateTime.Now > date.StartDate && DateTime.Now < date.EndDate)
{
// Do something
break;
}
}
因此,从功能上讲,您可以编写自己的迭代器方法来执行此操作,并且只需要多几行代码:
Date previousDate = null;
foreach (var date in dateList) // using foreach works with any enumerable type
{
if (DateTime.Now > date.StartDate && DateTime.Now < date.EndDate)
{
if (previousDate != null)
{
// Do something
}
break;
}
previousDate = date;
}
如果您经常这样做并且想要一个更简洁的扩展方法来帮助您用更少的代码完成此操作,您可以在这里使用 Jon Skeet 的回答:
推荐阅读
- web - 使用 Heroku 和 Domain.com 部署自定义域
- r - terms.formula 数据参数无效
- javascript - Ajax 不适用于 Opera 和 Microsoft Edge
- python - “真正的大整数”在时间复杂度和基本算术运算方面意味着什么
- java - 通过 Java 的 ScriptEngine 使用 pandas 和其他库
- caching - 在 Xamarin.forms 中与 Akavache 的持久聊天消息
- java - 无法根据 file.length() 操作附加到文件
- javascript - 如何在背景视频方面达到同样的效果?
- php - php NumberFormatter 格式转拼写
- ios - 循环清除内存