C# 如何在datetime的datacolumn中查找最大值?
我有一个DateTime的DataColumn,我想知道如何才能只有较早的日期(min)和较晚的日期(max)C# 如何在datetime的datacolumn中查找最大值?,c#,datetime,max,datacolumn,C#,Datetime,Max,Datacolumn,我有一个DateTime的DataColumn,我想知道如何才能只有较早的日期(min)和较晚的日期(max) 谢谢只需从数据列中检索DateTime列表, DataColumn中的Foreach行将当前元素添加到DateTime列表中 列出并使用排序方法,然后获取第一个和最后一个值 根据您的框架版本,对于2.0请使用上面的,对于>=3.5 您可以使用Max和Min 或 使用linq.OrderByDesc(p=>p.X).FirstOrDefault()在您的日期时间列表中这将给出您所要查找的
谢谢只需从数据列中检索DateTime列表, DataColumn中的Foreach行将当前元素添加到DateTime列表中
列出
并使用排序
方法,然后获取第一个和最后一个值
根据您的框架版本,对于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();
//实际代码
DataColumn=dt.Columns[0];//这就是你拥有的
数据表tbl=列表;
var first=tbl.AsEnumerable()
.Select(cols=>cols.Field(col.ColumnName))
.OrderBy(p=>p.Ticks)
.FirstOrDefault();
var last=tbl.AsEnumerable()
.Select(cols=>cols.Field(col.ColumnName))
.OrderByDescending(p=>p.Ticks)
.FirstOrDefault();
DataTable dt=新的DataTable(“MyDataTable”);
DataColumn dc=新的DataColumn(“DateColumn”);
dc.DataType=typeof(DateTime);
dt.Columns.Add(dc);
对于(int i=0;i来说,添加到kyle的答案中,是不是更容易做到:
最长日期:
var last = tbl.AsEnumerable()
.Max(r => r.Field<DateTime>(col.ColumnName));
var last=tbl.AsEnumerable()
.Max(r=>r.Field(col.ColumnName));
对于最早的日期:
var first = tbl.AsEnumerable()
.Min(r => r.Field<DateTime>(col.ColumnName));
var first=tbl.AsEnumerable()
.Min(r=>r.Field(col.ColumnName));
对我来说最简单的:
创建一个具有表“Tablename”和列“itemDate”的数据集,设置Datatyp System.DateTime
您可以读取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
一旦你有了列表,你也可以使用Max()和Min()。但我认为这是关于获取列表的问题。@Henk,你在哪里找到这些方法?Max()和Min()。@christophe你需要使用Linq(使用System.Linq)@Henk,Dave,是的,我看到了,我的IDE在我的测试中配置了2.0。只是一个DataColumn?它绑定到DataTable还是什么?你的方法看起来最好:)
var first = tbl.AsEnumerable()
.Min(r => r.Field<DateTime>(col.ColumnName));
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