c# - 过滤列表并获取一个额外的元素
问题描述
class xyz
{
DateTime TimeStamp;
String a;
}
我有一个列表,我需要使用 where 子句对其进行过滤,但还需要一个前一个元素。例子
listVariable.OrderBy(x=>x.TimeStamp).Where(x => x.Timestamp >=
StartDateTime.LocalDateTime && x.Timestamp <
EndDateTime.LocalDateTime).ToList();
我需要满足上述条件的项目,并且我还需要一个额外的前一个元素(即满足此条件之前的元素 x => x.Timestamp >= StartDateTime.LocalDateTime)。我怎样才能做到这一点?
例如:该列表包含诸如 '09/11/2018'
'10/11/2018' '15/11/2018' '18/11/2018' '21/11/2018' '25/11/2018'等元素
如果我查询 18-20 之间的日期。我应该得到 '15/11/2018' -> 前一个额外元素 '18/11/2018' '20/11/2018' -> 这些是满足 where(...) 条件的元素。
解决方案
您可以创建两个集合,然后将它们合并:
var list1 = listVariable.OrderBy(x=>x.TimeStamp).Where(x => x.Timestamp >=
StartDateTime.LocalDateTime && x.Timestamp <
EndDateTime.LocalDateTime).ToList();
var minItem = list1.Min(x=>x.TimeStamp);
var list2 = listVariable.Where(x.Timestamp < minItem.LocalDateTime).OrderBy(x=>x.TimeStamp).First();
var finalList = list.Concat(list2);
推荐阅读
- css - CSS 布局未正确对齐
- perl - 处理以数组形式发送的 POST 数据
- c# - 如何根据条件在 WinForms ComboBox 中设置 SelectedItem
- react-native - 如何在 app.js 文件中使用 mapStateToProps?
- angular - 输入字段的值更改时立即隐藏消息
- angular - 对于失败的基本身份验证方案,如何关闭浏览器自动打开的登录弹出窗口?
- laravel - 找不到模块:错误:无法解析“flag-icon-css”
- android - Flutter 和 Firebase:任务“:firebase_auth:compileDebugJavaWithJavac”执行失败
- java - 什么可以在没有初始化的情况下分配给 String ?
- dependency-injection - 在 .net 核心控制台应用程序中解决参考程序集中的依赖关系