0

我有以下代码从存储过程中获取值表。我的目标是将我从存储过程收到的表保存到某个列表或 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());

任何建议如何纠正它?谢谢

4

3 回答 3

0

您有子处理计算,因此只需传递给“DataSet ds”的子值,并在子中将其视为数据集以获取您需要的任何值。

于 2013-06-13T18:18:18.977 回答
0

我相信你想要这个:

Console.WriteLine(c.ColumnName.ToArray() + ": " + c.ToNullSafeString());
于 2013-06-13T16:56:48.200 回答
0

您需要循环到 Rows 集合是您想要打印行值以及包含单列值的 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();    
}

当然这只是一个例子。需要更健壮的代码来处理空值等情况。

于 2013-06-13T16:57:52.510 回答