2016-04-15 21 views
2

我正在尋找一個簡單的單線程來完成SqlClient命名空間中的以下內容,以節省輸入所有if-else語句。假設:有條件的AddWithValue作爲單線程

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

這就是我想要一個行:

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

任何人有任何聰明和可讀性? C#也很好。

編輯:n8wrl的答案做我要求的,但我應該已經更清楚:我正在尋找更通用的能力來添加任何數據類型的SQLparameter。即而不是「真或‘假’這可能是StringA和StringB

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")) 

你可能要考慮的是,原來的版本可能更易讀

更新:

如果您需要有不屬於布爾值,你可以使用IIf function這樣的:

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

我同意的方式。有人會懷疑你是否故意將列的存在作爲參數傳遞。或者你可以添加一個評論,如「如果列存在,則返回false」。 –

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