0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【C#】Null許容のDatetimeを比較してBooleanを返すメソッド【Nullable.Compare】

Last updated at Posted at 2021-02-27

Nullを許容したDateTime型変数を検索条件として、Linqの.Where内で使いたかったためメソッド作りました。

公式でNullable.Compareというメソッドがあるのですが、返却値がInt型で使いづらかったのでBoolean型にしておきました。

##メソッド

using System;

//date1がdate2より遅い日付の場合True
public bool CompareNullableDatetime(DateTime? date1, DateTime? date2)
{
     int result = Nullable.Compare(date1, date2);
     return result > 0;
}

##仕様
#####DateTimeが非Nullの場合

返却値 引数1 引数2 補足
TRUE 2021/02/27 00:00:00 2021/01/27 00:00:00 引数1が引数2より遅い時刻 
FALSE 2021/01/27 00:00:00 2021/02/27 00:00:00 引数1が引数2より早い時刻 
FALSE 2021/02/27 00:00:00 2021/02/27 00:00:00 引数1と引数2が同じ時刻

#####DateTimeがNullを含む場合

返却値 引数1 引数2
TRUE 2021/02/27 00:00:00 Null
FALSE Null 2021/02/27 00:00:00
FALSE Null Null

##Nullable.Compareに関して補足

######公式ドキュメント

####Nullable.Compareの仕様
覚え方的には、Nullを「0」だと思って「引数1-引数2」をする感覚です。

#####DateTimeが非Nullの場合

返却値 引数1 引数2 補足
0より大きい値 2021/02/27 00:00:00 2021/01/27 00:00:00 引数1が引数2より遅い時刻 
0より小さい値 2021/01/27 00:00:00 2021/02/27 00:00:00 引数1が引数2より早い時刻 
0 2021/02/27 00:00:00 2021/02/27 00:00:00 引数1と引数2が同じ時刻

#####DateTimeがNullを含む場合

返却値 引数1 引数2
0より大きい値 2021/02/27 00:00:00 Null
0より小さい値 Null 2021/02/27 00:00:00
0 Null Null

より大きい値、より小さい値ってなんやねん

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?