有条件的 AddWithValue 作为单行
Conditional AddWithValue as one-liner
我正在寻找一种简单的单行代码来在 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 参数的更通用的能力。即代替 "True or "False" 它可以是 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"))
这应该有效:
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"))
我正在寻找一种简单的单行代码来在 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 参数的更通用的能力。即代替 "True or "False" 它可以是 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"))
这应该有效:
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"))