C# 如何在datetime的datacolumn中查找最大值?

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,我想知道如何才能只有较早的日期(min)和较晚的日期(max)


谢谢

只需从数据列中检索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