C# 使用嵌套的JSON对象将SQLDataReader结果转换为JSON

C# 使用嵌套的JSON对象将SQLDataReader结果转换为JSON,c#,sql,sql-server,json,sqldatareader,C#,Sql,Sql Server,Json,Sqldatareader,我有一个C#应用程序,它检索以下格式的SQL结果集: customer_id date_registered date_last_purchase loyalty_points 1 2017-01-01 2017-05-02 51 2 2017-01-23 2017-06-21 124 ... 如何将其转换为JSON字符串,以

我有一个C#应用程序,它检索以下格式的SQL结果集:

customer_id     date_registered     date_last_purchase      loyalty_points
1               2017-01-01          2017-05-02              51
2               2017-01-23          2017-06-21              124
...
如何将其转换为JSON字符串,以便第一列(customer_id)是一个键,所有其他后续列都是每个customer id的嵌套JSON对象中的值

例如:

{
        1: {
            date_registered: '2017-01-01',
            date_last_purchase: '2017-05-02',
            loyalty_points: 51,
            ...
        },
        2: {
            date_registered: '2017-01-23',
            date_last_purchase: '2017-06-21',
            loyalty_points: 124,
            ...
        },
        ...
}
除了
date\u registed
date\u last\u purchase
loyalty\u points
,将来可能还会有其他列,因此我不想特别提及这些列的名称。因此,我已经使用了下面的代码来获取列名,但是在这之后我被卡住了

SqlDataReader sqlDataReader = sqlCommand.ExecuteReader();

var columns = new List<string>();

for (var i = 0; i < sqlDataReader.FieldCount; i++)
{
    columns.Add(sqlDataReader.GetName(i));
}

while (sqlDataReader.Read())
{
    rows.Add(columns.ToDictionary(column => column, column => sqlDataReader[column]));
}
SqlDataReader SqlDataReader=sqlCommand.ExecuteReader();
var columns=新列表();
对于(var i=0;icolumn,column=>sqlDataReader[column]);
}

您可以使用类似的方法将数据读取器转换为
字典,然后使用Json.NET将其转换为Json:

var items = new Dictionary<object, Dictionary<string, object>>();
while (sqlDataReader.Read())
{
    var item = new Dictionary<string, object>(sqlDataReader.FieldCount - 1);
    for (var i = 1; i < sqlDataReader.FieldCount; i++)
    {
        item[sqlDataReader.GetName(i)] = sqlDataReader.GetValue(i);
    }
    items[sqlDataReader.GetValue(0)] = item;
}
var json = Newtonsoft.Json.JsonConvert.SerializeObject(items, Newtonsoft.Json.Formatting.Indented);
var items=newdictionary();
while(sqlDataReader.Read())
{
var item=新字典(sqlDataReader.FieldCount-1);
对于(var i=1;i

更新:JSON“名称”始终是字符串,因此用于键的
object
GetValue

如何将其转换为JSON字符串
我看不到您的问题中有任何试图实现这一点的尝试。