2つのdatetimeフィールドを持つ強力な型付きデータテーブルがあります。テーブルには、SQL Serverのデータが格納されます。 SQL ServerのdatetimeフィールドではNULLを使用できます。 DBへのADO呼び出しで、私はNULLをトラップすることができました。Linqの結果でDateTimeのNullをチェックする構文
しかし、私はデータテーブルに対してLinq呼び出しを行っていますが、datetimeフィールドにNULLをトラップできる構文を見つけることができません。
var results = (from r in dsReleases.dtReleases
where r.ReleaseNumber == Convert.ToInt32(theRelease)
select r
).FirstOrDefault();
GetTheDeliveryData(results.Delivery.ToString());
lbReleaseNumber.Text = results.ReleaseNumber.ToString();
lbStartDate.Text = results.StartDate.ToShortDateString();
lbEndDate.Text = results.EndDate.ToShortDateString();
lbQuantity.Text = results.ReleaseQuantity.ToString();
lbStatus.Text = results.Status;
エラーは、開始日と終了日をラベルフィールドに書き込む際に発生します。 nullのdatetimeフィールドをテストする方法に関する提案はありますか?
私はこれを試しました。
lbStartDate.Text = results.StartDate == null ? "": results.StartDate.ToShortDateString();
とテーブルdtReleasesで列 '開始日が' がDBNullである
のエラーを得ました。
だから私はこれを試しました。
lbStartDate.Text = results.StartDate == DBNull.Value ? "": results.StartDate.ToShortDateString();
しかし、それはコンパイルされませんが、それはタイプ「のSystem.DateTime」と「System.DBNull」のオペランドに適用することはできません
演算子「==」のエラーが発生します。
この構文はコンパイルされますが、実行中にクラッシュします。
lbStartDate.Text = DBNull.Value.Equals(results.StartDate) ? "": results.StartDate.ToShortDateString();
これは、テーブル内の列 '開始日' の値は、バックこのエラーに
を私をリードには 'dtReleases' はDBNullです。あなたのオブジェクト内の
を参照してください。 – Rob
私はあなたが探しているものはvariable = conditionだと信じていますか? ConditionValue:else値;それは構文であり、なぜコンパイルされなかったのでしょうか。 – Niklas