获取要列出的 DataTable 的 DateTime 数据列

Get DataTime DataColumn of DataTable to List

我想在列表中获取我的 DataTable 的 DataColumn(DataTime 类型)。我如何使用 LINQ 执行此操作?

我尝试了以下几行但没有成功:

DateTimeList = dt.Columns.Cast<DataColumn>()
   .Where(dc => dc.DataType == typeof(DateTime)).ToList());

日期时间值的创建方式如下:

new DateTime(2019, 6, 17, 16, 46, 05)

到 return List<DateTime>DataTable 中的 DateTime 列输入:

var dates = dt.Columns.Cast<DataColumn>()
    .Where(c => c.DataType == typeof(DateTime))
    .SelectMany(c => c.Table.Rows.Cast<DataRow>()
    .Select(r => r.Field<DateTime>(c.ColumnName))).ToList();

无论 dt 是否包含一种或多种 Column<DateTime> 类型,查询都会获取所有 DateTime 值。

如果您在 table 中只有一个 DataColumn<DateTime> 类型,您可以改为:

var dates = dt.Rows
    .Cast<DataRow>()
    .Select(r => r.Field<DateTime>(dt.Columns.Cast<DataColumn>()
    .FirstOrDefault(c => c.DataType == typeof(DateTime))?.ColumnName)).ToList();