DataTable行筛选器自定义不同
本文关键字:自定义 筛选 DataTable | 更新日期: 2023-09-27 18:21:40
我的DataTable中有一列使用C#的日期。类似这样的东西:
2014/06/26上午11:23
2014/06/26上午11:45
2014/06/26 12:23 AM
2014/06/27 01:30 PM
2014/06/27 01:50 PM
2014/06/27下午02:30
2014/06/29 04:00 PM
2014/06/29 05:30 PM
2014/06/29 06:15 PM
如果我这样做:MyDataView.ToTable(true,MyDateField)。。。然后我得到上面所有的日期,因为它们都是独一无二的。
我想做的是基于日期部分而完全忽略时间部分来进行区分。
我在上面的日期中寻找的结果是:
2014/06/26
2014/06/27
2014/06/29
这必须发生在我的DataTable中。通常,在数据到达应用程序之前,我会在SQL中完成所有这些事情,但在这里我别无选择。
DataView.ToTable(true, "DateColumn")
按预期返回不同的DateTime值。
要根据日期部分筛选出记录,您可以从数据表中选择不同的行,如下所示:
var rows = dt.AsEnumerable().Select(r => ((DateTime)r["DateColumn"]).Date).Distinct();
foreach (var row in rows)
{
}
或
DataTable distinctTable = dt.AsEnumerable()
.GroupBy(r => r.Field<DateTime>("DateColumn").Date)
.Select(g => g.First())
.CopyToDataTable();
您可以进行
dates.Select(x => new DateTime(x.Year, x.Month, x.Day)).Distinct()
请参阅演示:https://dotnetfiddle.net/WBvI1c