LINQ to Datatable Group By

时间:2015-08-06 19:00:05

标签: c# sql linq datatable

我有一个返回3列数据的查询。

Country | Religion | Population
--------------------------------
US | Christianity | 80000000
US | Islam | 1000000
US | Judaism | 5000000
China | Buddhism | 100000000
China | Christianity | 2345737

等等。

我需要按国家/地区显示此数据。 JSON对象看起来像

[ { "Country" : "US", 
             {
                "Christianity" : 80000000, 
                "Islam": 1000000, 
                "Judaism": 5000000 
             }
      },
      { "Country" : "China", 
             {
                "Buddhism " : 100000000, 
                "Christianity ": 2345737
             }
      }
   ]

最好的方法是什么?将数据导入数据表并使用LINQ进行查询(如果是,那么如何?)

或者也许创建一个词典>。但我对如何填充数据感到困惑。

也许用Country,Dictionary创建一个类并返回这个类的数组。

感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用Group by in LINQ对数据进行分组。

您可以使用以下内容:

var grouped = from d in sampleData
                group d by d.Country
                into g
                select new {
                         Country = g.Key,
                         Data = g.Select(i => new {
                                             Religion = i.Religion,
                                             Population = i.Population
                                         })
                          };

然而,一旦它序列化为JSON,它看起来就不一样了。