「CreateDate」列と「UpdateDate」列を含むデータ テーブルがあります。最小の CreateDate と最大の UpdateDate を見つけようとしています。難しくはありませんが、列に NULL (または DBNull) を含めることができ、これは私をつまずかせています。私は次のものを使用していました:
DateTime dtMin = DateTime.MaxValue;
DateTime dtMax = DateTime.MinValue;
foreach(DataRow dr in dt.Rows)
{
DateTime dtCreateDate = dr.Field<DateTime>("CreateDate");
DateTime dtUpdateDate = dr.Field<DateTime>("UpdateDate");
dtMin = dtMin > dtCreateDate ? dtCreateDate : dtMin;
dtMax = dtMax > dtUpdateDate ? dtMax : dtUpdateDate;
}
NULL 日付の行にヒットするまで。
DateTime 日付タイプには null 値を含めることができないため、値を DateTime に解析する前に、DBNull.Value と null を確認する必要があります。DBNull.Value とオブジェクト null は 2 つの異なるものであることに注意してください。
DateTime? を宣言することで、dtCreateDate、dtUpdateDate に null 値を含めることができます。その後、null 値を受け取った場合は、スキップして dtMin および dtMax と比較することができます。
foreach (DataRow dr in dt.Rows)
{
DateTime? dtCreateDate = dr["CreateDate"] == DBNull.Value || dr["CreateDate"] == null ? (DateTime?) null : dr.Field<DateTime>("CreateDate");
DateTime? dtUpdateDate = dr["UpdateDate"] == DBNull.Value || dr["UpdateDate"] == null ? (DateTime?) null: dr.Field<DateTime>("UpdateDate");
dtMin = dtCreateDate == null ? dtMin : (dtMin > dtCreateDate ? dtCreateDate : dtMin);
dtMax = dtUpdateDate == null ? dtMax : (dtMax > dtUpdateDate ? dtMax : dtUpdateDate);
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加