私はDateTimeのDataColumnを持っています。私は、より早い日付(分)と後日(最高)しか持たないことを知りたいと思います。datetimeのdatacolumnでmaxを見つける方法は?
おかげ
私はDateTimeのDataColumnを持っています。私は、より早い日付(分)と後日(最高)しか持たないことを知りたいと思います。datetimeのdatacolumnでmaxを見つける方法は?
おかげ
これは、あなたが探しているものを与えるだろう:
// 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に、あなたのDataColumnから のforeach列をDateTimeの一覧を盗ん日時のリストに現在の要素を追加します。
List<DateTime>
を使用し、Sort
メソッドを使用して、最初と最後の値を取得します。
あなたのフレームワークのバージョンに依存し、上記2.0
使用するため、>=3.5
のためにあなたの日付と時刻のリストにLINQ .OrderByDesc(p => p.X).FirstOrDefault();
でMax
とMin
または を使用することができます
リスト<>を取得したら、Max()とMin()を使用することもできます。しかし、これはリストを取得することだと思います。 –
@Henk、その方法はどこにありますか? Max()およびMin()。 –
Linq-to-Objects –
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);
カイルからの回答に追加するには、それが簡単だけで行うにはありません:
var first = tbl.AsEnumerable()
.Max(r => r.Field<DateTime>(col.ColumnName));
と
var first = tbl.AsEnumerable()
.Min(r => r.Field<DateTime>(col.ColumnName));
をするだけのDataColumn? DataTableなどにバインドされていますか? –