Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# c-如何在包含单词和日期的日期列之间过滤datagridview?_C#_Date_Datagridview_Filter_Between - Fatal编程技术网

C# c-如何在包含单词和日期的日期列之间过滤datagridview?

C# c-如何在包含单词和日期的日期列之间过滤datagridview?,c#,date,datagridview,filter,between,C#,Date,Datagridview,Filter,Between,我有一个名为DateColumn的列,它存储创建日期,如下所示: created at 2017-01-20 created at 2017-01-21 created at 2017-01-22 created at 2017-01-23 created at 2017-01-24 当列还包含created at string时,如何仅获取20到24之间的日期 我尝试了这个方法,但只在主题中只有日期的专栏上有效,没有文字: (dataGridView1.DataSource as DataT

我有一个名为DateColumn的列,它存储创建日期,如下所示:

created at 2017-01-20
created at 2017-01-21
created at 2017-01-22
created at 2017-01-23
created at 2017-01-24
当列还包含created at string时,如何仅获取20到24之间的日期

我尝试了这个方法,但只在主题中只有日期的专栏上有效,没有文字:

(dataGridView1.DataSource as DataTable).DefaultView.RowFilter = "DateColumn  >= '" + minDate + "' AND DateColumn <= '" + maxDate + "'";

我想你的问题是,在你的专栏中创建了。现在你必须找到解决办法。你最好考虑一下是否有必要在那里创建。如果从数据库中选择DataTable中的这些值,则可以在select中对其进行子串

例如,Oracle样式:

SELECT someValue1, someValue2, TO_DATE(SUBSTR(DateColumn, 10, 10), 'YYYY-MM-DD') DateColumn
FROM something
如果您确实需要此文本,那么您应该在DataTable中创建一个只包含日期的新列。然后可以筛选此列:

DataTable yourTable = new DataTable();
//Fill with strange strings like 'created at 2017-01-01'
yourTable.Columns.Add("RealDate");

foreach (DataRow row in yourTable.Rows)
{
   //Instead of substr you can also use regex if you prefer
   row["RealDate"] = Convert.ToDateTime(Substring(row["DateColumn"], 10, 10));
}

在我的两种解决方案之后,您可以像您在问题中提到的那样轻松地为DateTime筛选新行。

您的DataTable是否来自数据库?您的DateColumn类型是varchar,minDate类型是DateTime?DateTime值和varchar列之间无法进行直接比较。您需要找到从列中提取日期的方法,然后与DateTime值进行比较。minDate和maxDate来自datetimepicker,yes DateColumn类型是我的mysql数据库中的varchar。我建议您在获取数据的SQL查询中,将该列的内容提取到新列中。这样,您就可以拥有DateTime列,该列可以按进行筛选或排序