2016-04-15 5 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# тоже очень.

EDIT: Ответ n8wrl делает то, что я просил, но я должен был быть более ясным: я ищу более общую возможность добавления любого типа данных в SQLparameter. то есть вместо «Правда или„False“, это может быть 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")) 

Вы могли бы хотеть рассмотреть тот факт, что оригинальная версия может быть более читаемым

UPDATE:.

Если вы должно иметь значение, которые не булевы, вы можете использовать IIf function так:

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

я согласен. Кто-то может подумать, намеренно ли вы передаете наличие столбца в качестве параметра. Или вы могли бы добавить комментарий вроде «True, если столбец существует else false». –

0
cmd.Parameters.AddWithValue("@SQLParameter", MyDataSet.Tables("MyTableName").Columns.Contains("MyColumnName")) 
Смежные вопросы