【发布时间】:2026-01-17 23:40:01
【问题描述】:
我有一个 DateTime 的 DataColumn,我想知道如何才能只有较早的日期 (min) 和较晚的日期 (max)。
谢谢
【问题讨论】:
-
只是一个数据列?它是绑定到 DataTable 还是什么的?
标签: c# datetime max datacolumn
我有一个 DateTime 的 DataColumn,我想知道如何才能只有较早的日期 (min) 和较晚的日期 (max)。
谢谢
【问题讨论】:
标签: c# datetime max datacolumn
只需从您的 DataColumn 中检索 DateTime 列表, DataColumn 中的 Foreach 行将当前元素添加到 DateTime 列表中。
List<DateTime> 并使用Sort 方法然后获取第一个和最后一个值。
取决于你的框架版本,对于2.0 使用上面,对于>=3.5
你可以使用Max 和Min
要么
在您的日期时间列表中使用 linq .OrderByDesc(p => p.X).FirstOrDefault();
【讨论】:
这将提供您正在寻找的内容:
// Initial Code for Testing
DataTable dt = new DataTable();
dt.Columns.Add("Dates", typeof(DateTime));
dt.Rows.Add(new object[] { DateTime.Now });
dt.Rows.Add(new object[] { DateTime.Now.AddDays(1) });
dt.Rows.Add(new object[] { DateTime.Now.AddDays(2) });
这是您将使用的代码:
// Actual Code
DataColumn col = dt.Columns[0]; // Call this the one you have
DataTable tbl = col.Table;
var first = tbl.AsEnumerable()
.Select(cols => cols.Field<DateTime>(col.ColumnName))
.OrderBy(p => p.Ticks)
.FirstOrDefault();
var last = tbl.AsEnumerable()
.Select(cols => cols.Field<DateTime>(col.ColumnName))
.OrderByDescending(p => p.Ticks)
.FirstOrDefault();
【讨论】:
DataTable dt = new DataTable("MyDataTable");
DataColumn dc = new DataColumn("DateColumn");
dc.DataType = typeof(DateTime);
dt.Columns.Add(dc);
for (int i = 0; i <= 5; i++)
{
DataRow newRow = dt.NewRow();
newRow[0] = DateTime.Now.AddDays(i);
dt.Rows.Add(newRow);
}
DateTime maxDate =
Convert.ToDateTime(
((from DataRow dr in dt.Rows
orderby Convert.ToDateTime(dr["DateColumn"]) descending
select dr).FirstOrDefault()["DateColumn"]
)
);
DateTime minDate =
Convert.ToDateTime(
((from DataRow dr in dt.Rows
orderby Convert.ToDateTime(dr["DateColumn"]) ascending
select dr).FirstOrDefault()["DateColumn"]
)
);
【讨论】:
object maxDate = dataTable.Compute("MAX(TheDateColumnName)", null);
object minDate = dataTable.Compute("MIN(TheDateColumnName)", null);
【讨论】:
要补充 kyle 的答案,这样做不是更容易吗:
最佳日期:
var last = tbl.AsEnumerable()
.Max(r => r.Field<DateTime>(col.ColumnName));
最早日期:
var first = tbl.AsEnumerable()
.Min(r => r.Field<DateTime>(col.ColumnName));
【讨论】:
对我来说最简单: 使用表“Tablename”和列“itemDate”制作数据集,设置Datatyp System.DateTime
您可以读取日期时间列表中的所有元素并搜索 minDate
Dim List_Date As New List(Of DateTime)
Dim minDate As DateTime
For Each elem As DataRow In DataSet1.Tables("Tablename").Rows
List_Date.Add(elem.Item("itemDate"))
Next
minDate = List_Date.Min
【讨论】: