2017-12-06 6 views
-2

これを1行のコードに書き直すことは可能ですか?テキストボックスのif/elseを1行のコードに書き直す

if (txtInvoiceDate.Text != "") 
{ 
    query.Parameters.AddWithValue("@InvoiceDate", SqlDbType.SmallDateTime).Value = DateTime.Parse(txtInvoiceDate.Text.ToString()); 
} 
else 
{ 
    query.Parameters.AddWithValue("@InvoiceDate", SqlDbType.SmallDateTime).Value = DBNull.Value; 
} 
+7

条件( '?:')演算子について学んでください。 – SLaks

+0

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/conditional-operator – maccettura

+0

私は?:演算子について読んでいます。私はこの状況でどのように動作するのか分かりませんでした。私はこのケースでそれを一度も使用していません – kevorski

答えて

2

はい私が読んでいる

:?演算子。この状況でこの がどのように動作するのかよく分かりませんでした。私はあなたが

query.Parameters.AddWithValue("@InvoiceDate", SqlDbType.SmallDateTime).Value = txtInvoiceDate.Text != "" ? DateTime.Parse(txtInvoiceDate.Text.ToString()) : DBNull.Value; 

に変更することができますが、string.IsNullOrWhiteSpace()

query.Parameters.Add("@InvoiceDate", SqlDbType.SmallDateTime).Value = !string.IsNullOrWhiteSpace(txtInvoiceDate.Text) ? DateTime.Parse(txtInvoiceDate.Text.ToString()) : DBNull.Value; 

は、詳細を読む使用する方がよいでしょう、あなたのコードによると、

したがって、この場合には、それを使ったことがありません?: Operator

+0

あなたはおそらくOPのコードのロジックの欠陥に対処する必要があります。 textbox.Textプロパティがnullの場合どうなりますか... – maccettura

+0

@maccetturaはい、私はOPのコードのロジックフローに従います。「これはこの状況でどのように動作するのかはわかりませんでした」 – Marusyk

+0

あなたは片側をキャストする必要があります'オブジェクト' – SLaks

2

短い回答:はい

長い回答:

query.Parameters.AddWithValue("@InvoiceDate", SqlDbType.SmallDateTime).Value = string.IsNullOrWhiteSpace(txtInvoiceDate.Text) ? DBNull.Value : DateTime.Parse(txtInvoiceDate.Text.ToString()); 
+0

ありがとうございます。私はこれに似たものを試していたが、行を完成させるのに問題があった。 – kevorski

関連する問題