6

データベースの null 値を C# の同等の表現に変換する DAL があります。例えば:

NULL for Numeric = 0
NULL for String = String.Empty
NULL for DateTime = "1/1/0001" (i.e. DateTime.MinValue)

日付の問題は、プレゼンテーション レイヤー、特に GridViews にあります。1/1/01ユーザーに表示することはできません。

以前は空文字列をチェックif myDate.Year=1 or myDate.Year < AcceptedDateして表示していたのですが、他の型と違って余計な手間がかかるようです

より良いアプローチを受け入れてください。ありがとう。

4

6 に答える 6

10

データ型を使用Nullableして null 値を格納します。

DateTime? value = null;
int? myNullableInt = 1;
value = DateTime.Now;

変数に値またはnullがあるかどうかを確認する方法

if (value!=null)

文字列値は null を格納できるため、文字列が null を格納するための異なるデータ型はありません。

string var;
if (var == null)

また

if (String.IsNullOrEmpty(var))
于 2012-06-07T13:08:46.453 に答える
6

DateTime.MinValue 定数も使用できます。

http://msdn.microsoft.com/en-us/library/system.datetime.minvalue.aspx

あなたの条件は次のとおりです。

if (myDate == DateTime.MinValue)
于 2012-06-07T13:12:03.513 に答える
1

他の人が言及しているように、あなたはを使うことができますSystem::Nullable<DateTime>

私が見たもう1つのアプローチは、標準DateTimeを使用し、などの特別な値を使用することDateTime.MinValueです。DateTimeこれは、既存のインターフェイスのタイプを尊重する必要があり、をに変更できない場合に役立ちますNullable<DateTime>

于 2012-06-07T13:11:15.240 に答える
1

を使用できるので、DAL からではなくNullable DateTime戻ります。このようにして、戻り値が null かどうかを確認できます。DateTime?DateTime

DateTime? dateTime = null;
于 2012-06-07T13:08:39.810 に答える
1

他の人が提案したように Nullable DateTime を使用するか、次のトリックを使用できます:(無効なデフォルトを防ぐため)。

// If dateTime has not been initialize, initialize to Now
// (or to any other legal inital values)
dateTime = ((dateTime != new DateTime()) ? dateTime : DateTime.Now);

このトリックは、null 非許容の DateTime を使用する必要があり、何もない場合にデフォルトを提供したい場合に役立ちます。(たとえば、DB に null 非許容の DateTime 列があり、行が新しい場合にのみ値を設定したい。)

于 2012-06-07T13:13:00.373 に答える
1

これまでと同じようにチェックを行い、それに応じて表示する以外に選択肢はないと思います。null 許容型を使用すると、作業が簡単になる場合があります。データによっては、数値であってもこのように処理する必要があります。DBNull != 0。

于 2012-06-07T13:13:28.397 に答える