条件AddWithValue作为一行

时间:2016-04-15 18:26:03

标签: c# vb.net sqlclient

我正在寻找一个简单的单行程序来完成SqlClient命名空间中的以下操作,以节省输入所有if-else语句的输入。假设:

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的答案符合我的要求,但我应该更清楚:我正在寻找将更多数据类型添加到SQL参数的更通用的能力。 ie而不是“True或”False“它可能是StringA和StringB。

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

2 个答案:

答案 0 :(得分: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"))

答案 1 :(得分:0)

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