如何访问 C# 中结构化的 SqlDbType 的 Sql 参数的列和数据?
How to access columns and data of a Sql parameter of SqlDbType as Structured in C#?
在 C# 中,对于 Table 值参数,我添加了一个 SqlParameter,其中 'SqlDbType' 作为 'Structured','Value' 作为 C# 数据 Table。
我想稍后在我的代码中提取这些数据。
- 我想验证 SqlDbType/DbType 是否为 'Structured'。
- 如果是,并且 'Value' 是 'DataTable',我想获取其列的列名和数据行中的数据。
下面是 SqlParameter 的代码。
DataTable memoIdDt = new DataTable();
SqlParameter param = new SqlParameter ("memos", SqlDbType.Structured) { Value = memoIdDt, TypeName = "Table_Type_In_DB" };
稍后我想做类似下面的事情(这不是确切的代码)。
//I am not able to use param.SqlDbType. I can use the param.DbType property.
//But it returns Object. So, not able to get the if clause right.
If(param.DbType == SqlDbType.Structued)
{
//foreach column in param.Value.Columns, print columnNames
//foreach DataRow in param.Value, print the array
}
如果您知道如何实现,请提供帮助。
我想你可以简单地将 param.Value
转换回 DataTable
:
if (param.SqlDbType == SqlDbType.Structured)
{
var table = param.Value as DataTable;
foreach (DataColumn column in table.Columns) Console.WriteLine(column.ColumnName);
foreach (DataRow row in table.Rows) Console.WriteLine(row.ItemArray.Length);
}
在 C# 中,对于 Table 值参数,我添加了一个 SqlParameter,其中 'SqlDbType' 作为 'Structured','Value' 作为 C# 数据 Table。 我想稍后在我的代码中提取这些数据。
- 我想验证 SqlDbType/DbType 是否为 'Structured'。
- 如果是,并且 'Value' 是 'DataTable',我想获取其列的列名和数据行中的数据。
下面是 SqlParameter 的代码。
DataTable memoIdDt = new DataTable();
SqlParameter param = new SqlParameter ("memos", SqlDbType.Structured) { Value = memoIdDt, TypeName = "Table_Type_In_DB" };
稍后我想做类似下面的事情(这不是确切的代码)。
//I am not able to use param.SqlDbType. I can use the param.DbType property.
//But it returns Object. So, not able to get the if clause right.
If(param.DbType == SqlDbType.Structued)
{
//foreach column in param.Value.Columns, print columnNames
//foreach DataRow in param.Value, print the array
}
如果您知道如何实现,请提供帮助。
我想你可以简单地将 param.Value
转换回 DataTable
:
if (param.SqlDbType == SqlDbType.Structured)
{
var table = param.Value as DataTable;
foreach (DataColumn column in table.Columns) Console.WriteLine(column.ColumnName);
foreach (DataRow row in table.Rows) Console.WriteLine(row.ItemArray.Length);
}