c# - Bindingsource 过滤器无法正常工作
问题描述
我需要使用 datepicker1 和 datepicker2 过滤日期之间的 ADGV,但我的代码只过滤 Day,无论它只过滤 DAYS 之间的月份或年份。我试图给我的 var 值添加消息: 3/1/2018 的字符串 datetry 是 01.03.2018 datepicker1 是 01.05.2019 datepicker2 是 27.05.2019 并且过滤器看起来像这样 Data >= '01.05.2019' AND Data < '27.05.2019 ' 并且我没有在列表中获得第一天,列表从第 2 天(2018 年 3 月 2 日)开始。我尝试在 csv 文件中将格式更改为 3.1.2018,但这没有帮助。
PS 我从 .csv 文件中获取数据,没有使用数据库,所以我不能使用 sql 查询。
我试图用谷歌搜索它,发现了类似的问题和解决方案,但没有一个和我完全一样,我无法将它应用到我的代码中,因为我不擅长编程,但我需要制作这个“过滤数据”程序。
string line;
while ((line = sr.ReadLine()) != null)
{
if (!(line.Contains("#")))
{
string[] columns = line.Split(';');
string datynski = columns[0];
DateTime dateTry = DateTime.ParseExact(datynski,"M/d/yyyy",CultureInfo.InvariantCulture);
datatable1.Rows.Add(dateTry.ToShortDateString(), columns[1], columns[2], columns[3]);
}
bindingsource1.DataSource = datatable1;
bindingsource1.Filter = "Data >= '" + dateTimePicker1.Value.Date + "' and Data <= '" + dateTimePicker2.Value.Date + "'";
adgv.DataSource = bindingsource1;
}
解决方案
转换为 datetime应该很容易。
过滤器可能是这样的(使用 LinQ):
public static List<DateTime> FilterDatesBetween(List<DateTime> dates,
DateTime start, DateTime end)
{
return dates.Where(date => IsDateInPeriod(date, start, end)).
OrderBy(date => date).ToList();
}
public static bool IsDateInPeriod(DateTime date, DateTime start, DateTime end)
{
return (date > start && date < end);
}
推荐阅读
- c - 尝试按文件和文件夹分隔 struct stat 时,为什么我有两个相同的数组?
- shell - 循环使用逗号分隔的子字符串,而不会中断空格
- angular - Angular 9:如何获取从 rest api 服务调用返回的对象的属性
- python - 可调用以添加到引用 M2M 关系的中间模型中的额外字段的 list_display
- python - django-channels 1.x 检测用户何时离开/刷新页面
- java - MANIFEST.MF 在 Web 项目中的外观如何?
- python - 是否可以通过 python sys 模块运行 MAFFT
- html - HTML 中只读输入字段的用途是什么?
- html - 我无法弄清楚我的 HTML 和 jQuery 实现有什么问题
- java - 以字符串形式返回数据