繁体   English   中英

使用列标题在C#中创建Json字符串

[英]Creating Json string in C# with column headings

下面的代码运行完美,但是我想知道一种将列标题也拉出来的方法吗? 如果可能,我希望在while循环中使用它。 希望这里有人可以提供帮助。

谢谢,詹姆斯。

namespace WorldViewNet.include
{
    public class ImageHandler : IHttpHandler
    {
        public void ProcessRequest(HttpContext context)
        {
            object data = LoadAPI(context);
            string jsonData = JsonConvert.SerializeObject(data);
            context.Response.Write(jsonData);
        }

        public List<object[]> LoadAPI(HttpContext context)
        {
            List<object[]> list = new List<object[]>();
            SqlConnection sqlConnection1 = new SqlConnection(globalLibrary.NewConnectionString);
            SqlCommand cmd = new SqlCommand();
            SqlDataReader reader;
            string tablename = context.Request.QueryString["tablename"];
            string maybeID = context.Request.QueryString["ID"];

            cmd.CommandText = "SELECT * FROM " + tablename;

            if (maybeID != null)
            {
                cmd.CommandText += " WHERE " + tablename + "ID =" + maybeID;
            }

            cmd.CommandType = CommandType.Text;
            cmd.Connection = sqlConnection1;

            sqlConnection1.Open();

            reader = cmd.ExecuteReader();
            while (reader.Read())
            {
                object[] row = new object[23];
                reader.GetValues(row);
                list.Add(row);
            }
            sqlConnection1.Close();
            return list;
        }
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }

    }
}

您应该能够简单地做到这一点:

reader = cmd.ExecuteReader();
var columns = Enumerable.Range(0, reader.FieldCount).Select(reader.GetName).ToList();

columns应该是所有列名称的立即列出。

如果您需要非Linq方法来执行此操作:

reader = cmd.ExecuteReader();
var columns = new List<string>();

for(int z=0;z<reader.FieldCount;z++)
{
   columns.Add(reader.GetName(z));
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM