条件AddWithValue作为一行



我正在寻找一个简单的一行程序来在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参数添加任何数据类型的更通用的能力。即不是"真"或"假",而是StringA和StringB。

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

这应该有效:

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

您可能需要考虑这样一个事实,即原始版本可能更具可读性。

更新:

如果需要非布尔值,可以使用IIf函数,如下所示:

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

相关内容

  • 没有找到相关文章

最新更新