2016-11-16 21 views
0

私はこのデータテーブルを辞書に変換する方法<string、list <object>> C?

ID CategoryID Category 
1 1   Category1 
2 1   Category2 

のようなデータテーブルを持っていると私は私がJSON.NET はいでそれをシリアル化できるように、私はdictionary<string, list<object>>に私のデータテーブルをひそかできますどのようにこの

{ 
    "1" 
     [ 
     {Category: Category1}, 
     {Category:Category2} 
     ] 
    } 

のようなキー付きJSONを生成しようとしています辞書で重要な問題を重複して実行する。 事前にアイデアをお寄せいただきありがとうございます。

+0

DataTableの構造は私の質問で明らかになっていないので、私はもう一度試して... ID |カテゴリID |カテゴリ ------------------------------------ 1 | 1 |カテゴリ1 2 | 1 | Category2 – NShaik

+0

多分試してみてくださいJson.net http://stackoverflow.com/questions/2979922/how-to-convert-datatable-to-json-string-using-json-net – KMoussa

答えて

2

ここでは完全なコード:

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)); 

最後の文字列は、(私は読みやすくするためにそれをフォーマットし)JSONあなたを与える:

{ 
    "1": 
     [ 
      {"Category":"Category1"}, 
      {"Category":"Category2"}, 
      {"Category":"Category5"} 
     ], 
    "2": 
     [ 
      {"Category":"Category3"}, 
      {"Category":"Category4"} 
     ], 
    "3": 
     [ 
      {"Category":"Category6"} 
     ] 
} 
+0

ありがとう! @アレクサンダーペトロフ。変更は一切ありませんでした。私はグループ化を考えていましたが、それを完成させるためにベールではありません....体が見ている場合は...入れ子になったオブジェクトに列を追加するために、このようにコンマで区切って行に追加しました... var dict = g.Key.ToString()、g => g.Select(row => new {DriveID()) .GroupBy(行=>行.Field ( "プロモーションID")) .ToDictionary = Row.Field ( "DriveID")、DrieDate = row.Field ( "DriveDate")})。ToList()); – NShaik

関連する問題