将存储过程的表输出值保存在列表中
本文关键字:保存 存在 列表 输出 存储过程 | 更新日期: 2023-09-27 18:18:10
我有下面的代码,从存储过程中获取一个值表。我的目标是将从存储过程接收到的表保存到某个列表或IEnumerable中,以便稍后在代码中处理它。
存储过程返回两行:id和Name。代码工作得很好,除了当我使用它在foreach循环中编写值进行测试时,它只列出列名而不是值。
string cs =ConfigurationManager.ConnectionStrings["con1"].ToString();
string procName= "testing2";
SqlConnection conn=new SqlConnection(cs);
try
{
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand(procName, conn);
da.SelectCommand.CommandType = CommandType.StoredProcedure;
DataSet ds = new DataSet();
da.Fill(ds);
ds.Tables[0].TableName = "Rows";
foreach (DataColumn c in ds.Tables[0].Columns)
{
c.ColumnMapping=MappingType.Attribute;
Console.WriteLine(c.ColumnName.ToArray());
}
}
catch (Exception e)
{
Console.Write("Error" + e);
}
finally
{
conn.Close();
}
我认为我在以下两行代码中犯了错误,这只是写列名而不是值:
c.ColumnMapping=MappingType.Attribute;
Console.WriteLine(c.ColumnName.ToArray());
有什么建议吗?由于
如果您想打印行值,则需要循环到Rows Collection并且对于包含单列值的ItemArray上的每一行-
foreach (DataRow r in ds.Tables[0].Rows)
{
for(int x = 0; x < r.ItemArray.Length; x++)
Console.WriteLine(r.ItemArray[x].ToString());
Console.WriteLine();
}
当然这只是一个例子。需要更健壮的代码来处理空值之类的情况。
我相信你想要这个:
Console.WriteLine(c.ColumnName.ToArray() + ": " + c.ToNullSafeString());
你有子处理计算,所以只需传递到"DataSet ds"的子值,并在子中将其视为一个数据集,以获得你需要的任何值