2016-04-15 9 views
2

すべてのif-elseステートメントを保存するために、SqlClient名前空間で次の処理を行うためのシンプルな1行を探しています。仮定すると:条件付きAddWithValueをワンライナーとして

Dim cmd As New SqlCommand("MyStoredProcName", MySqlConnection) 

これは私が1行にしようとしているものです:

If MyDataSet.Tables("MyTableName").Columns.Contains("MyColumnName") Then 
    cmd.Parameters.AddWithValue("@SQLParameter", True) 
Else 
    cmd.Parameters.AddWithValue("@SQLParameter", False) 
End If 

誰もが賢いと読みやすいものがありますか? C#も細かい。

EDIT:n8wrlの答えは私が尋ねたことですが、私はもっと明確にすべきでした。私は、SQLparameterにデータ型を追加するより一般的な機能を探しています。すなわちの代わりに、それはStringAと列Bかもしれない 『「Trueまたは』偽

If MyDataSet.Tables("MyTableName").Columns.Contains("MyColumnName") Then 
    cmd.Parameters.AddWithValue("@SQLParameter", "StringA") 
Else 
    cmd.Parameters.AddWithValue("@SQLParameter", "StringB") 
End If 
+0

、私はそれはそれは私が同意 – Icemanind

答えて

1

これは動作するはずです:。

cmd.Parameters.AddWithValue("@SQLParameter", MyDataSet.Tables("MyTableName").Columns.Contains("MyColumnName")) 

あなたは、元のバージョンがあるかもしれないということを検討する必要がありますより読み

UPDATE:

あなたの場合ブールない値を持っている必要があり、あなたがこのようIIf functionを使用することができます。これは一つ下の行に凝縮することができるが

cmd.Parameters.AddWithValue("@SQLParameter", IIf(MyDataSet.Tables("MyTableName").Columns.Contains("MyColumnName"), "StringA", "StringB")) 
+0

ある方法より読みやすいと思います。誰かが意図的に列の存在をパラメータとして渡しているかどうか疑問に思うかもしれません。または、「列が存在する場合はTrue」というコメントを追加することもできます。 –

0
cmd.Parameters.AddWithValue("@SQLParameter", MyDataSet.Tables("MyTableName").Columns.Contains("MyColumnName"))