c# - 有条件的 AddWithValue 作为单行

标签 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 参数的更通用的能力。即,它可以是 StringA 和 StringB,而不是“True 或”False“。

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

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

更新:

如果您需要非 bool 值,您可以使用 IIf function像这样:

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

关于c# - 有条件的 AddWithValue 作为单行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36654376/

相关文章:

c# - 不能包含 Microsoft.Security.Application?

c# - 我正在构建一个 C# AWS Lambda 包。如何正确包含 System.Data.SqlClient.dll?

c# - 在 WPF 中撤消/重做?

c# - 网站上的母版页,但在 asp.net 的源代码中没有母版页?

wpf - 如何在 WPF 4 应用程序中使用插入键(就像在传统窗口中一样)?

c# - 连接的TCP套接字如何同时发送/接收多个文件?

vb.net - 如何在单独的线程中创建加载器?

Intellisense 在 SQL Server Management Studio 中不工作。可能是什么原因?

Azure函数运行时异常,系统数据sqlclient异常的类型初始值设定项,无法加载DLL 'sni.dll'

c# - 如何使用 Windsor 容器注入(inject) Func<T,U>