如何将数据表转换为字典<;字符串,列表<;对象>&燃气轮机;在C#中?

如何将数据表转换为字典<;字符串,列表<;对象>&燃气轮机;在C#中?,c#,json,dictionary,dataset,C#,Json,Dictionary,Dataset,我有一个这样的数据表 ID CategoryID Category 1 1 Category1 2 1 Category2 { "1" [ {Category: Category1}, {Category:Category2} ] } 我正试图像这样生成键控json ID CategoryID Category 1 1 Category1

我有一个这样的数据表

ID CategoryID Category
1   1         Category1
2   1         Category2
    {
     "1"
        [
         {Category: Category1},
         {Category:Category2}
        ]
    }
我正试图像这样生成键控json

ID CategoryID Category
1   1         Category1
2   1         Category2
    {
     "1"
        [
         {Category: Category1},
         {Category:Category2}
        ]
    }
如何将数据表转换为
字典
,以便使用
JSON.NET
是,正在运行以复制字典中的关键问题。 提前感谢您的建议。

这里是完整的代码:

var dataTable = new DataTable();

dataTable.Columns.Add("ID", typeof(int));
dataTable.Columns.Add("CategoryID", typeof(int));
dataTable.Columns.Add("Category", typeof(string));

dataTable.Rows.Add(1, 1, "Category1");
dataTable.Rows.Add(2, 1, "Category2");
dataTable.Rows.Add(3, 2, "Category3");
dataTable.Rows.Add(4, 2, "Category4");
dataTable.Rows.Add(5, 1, "Category5");
dataTable.Rows.Add(6, 3, "Category6");


var dict = dataTable.AsEnumerable()
    .GroupBy(row => row.Field<int>("CategoryID"))
    .ToDictionary(
        g => g.Key.ToString(),
        g => g.Select(row => new { Category = row.Field<string>("Category") }).ToList()
    );

var jss = new JavaScriptSerializer();
Console.WriteLine(jss.Serialize(dict));
以下是完整代码:

var dataTable = new DataTable();

dataTable.Columns.Add("ID", typeof(int));
dataTable.Columns.Add("CategoryID", typeof(int));
dataTable.Columns.Add("Category", typeof(string));

dataTable.Rows.Add(1, 1, "Category1");
dataTable.Rows.Add(2, 1, "Category2");
dataTable.Rows.Add(3, 2, "Category3");
dataTable.Rows.Add(4, 2, "Category4");
dataTable.Rows.Add(5, 1, "Category5");
dataTable.Rows.Add(6, 3, "Category6");


var dict = dataTable.AsEnumerable()
    .GroupBy(row => row.Field<int>("CategoryID"))
    .ToDictionary(
        g => g.Key.ToString(),
        g => g.Select(row => new { Category = row.Field<string>("Category") }).ToList()
    );

var jss = new JavaScriptSerializer();
Console.WriteLine(jss.Serialize(dict));

数据表结构在我的问题中不清楚,所以我再试一次。。。ID | CategoryID | Category----------------------------1 | 1 | Category1 2 | 1 | category2可能尝试Json.net数据表结构在我的问题中不清楚,所以我再试一次。。。ID | CategoryID | Category----------------------------1 | 1 | Category1 2 | 1 | category2可以试试Json.net谢谢@亚历山大·彼得罗夫。工作完全没有变化。我一直在考虑分组,但只是不想完成它…万一有人想…向嵌套对象添加更多列,我将它们添加到以逗号分隔的行中,如下所示。。。var dict=dt.AsEnumerable().GroupBy(row=>row.Field(“PromotionID”)).ToDictionary(g=>g.Key.ToString(),g=>g.Select(row=>new{DriveID=row.Field(“DriveID”),DrieDate=row.Field(“DriveDate”)}.ToList();谢谢@亚历山大·彼得罗夫。工作完全没有变化。我一直在考虑分组,但只是不想完成它…万一有人想…向嵌套对象添加更多列,我将它们添加到以逗号分隔的行中,如下所示。。。var dict=dt.AsEnumerable().GroupBy(row=>row.Field(“PromotionID”)).ToDictionary(g=>g.Key.ToString(),g=>g.Select(row=>new{DriveID=row.Field(“DriveID”),DrieDate=row.Field(“DriveDate”)}.ToList();