2015-07-19 66 views
0

我有一个ParentID列的数据集表,并希望将此列中的多个值计数到一个具有两个字段的新表中,例如ParentID 5978和ParentID 4的计数。获取数据集表中多个值的计数

我的表列

ParentID 
5978 
5978 
5978 
5978 
5979 
5979 
5979 
5979 
5979 
5979 
5979 
5979 
5980 
5980 
5980 
5980 
5981 
5981 
5981 

代码片段的片段:

TreeProvider tree = new TreeProvider(MembershipContext.AuthenticatedUser); 
      TreeNodeDataSet parentNodes = tree.SelectNodes(SiteContext.CurrentSiteName, "/Shop%", LocalizationContext.CurrentCulture.CultureCode, false, "My.ProductCategory", "OriginalID = " + cId, "NodeID", -1, false, 1); 
      DataTable dt = new DataTable(); 
      DataSet ds = new DataSet(); 
      DataSet dx = new DataSet(); 
      DataSet da = new DataSet(); 
      ds = parentNodes.Items.FirstItem.Children; 
      dx = parentNodes.Items.FirstItem.AllChildren; 
      da.Merge(dx.Tables[0].Select("NodeLevel = 4")); 

我要查询的表是在数据集中DA

+2

你的代码片段? –

+0

代码片段; – JohnL

回答

1

尝试类似这样的东西。使用GroupBy()

  DataTable dt = new DataTable(); 

      dt.Columns.Add("ParentID", typeof(int)); 
      dt.Rows.Add(new object[] {5978}); 
      dt.Rows.Add(new object[] {5978}); 
      dt.Rows.Add(new object[] {5978}); 
      dt.Rows.Add(new object[] {5978}); 
      dt.Rows.Add(new object[] {5979}); 
      dt.Rows.Add(new object[] {5979}); 
      dt.Rows.Add(new object[] {5979}); 
      dt.Rows.Add(new object[] {5979}); 
      dt.Rows.Add(new object[] {5979}); 
      dt.Rows.Add(new object[] {5979}); 
      dt.Rows.Add(new object[] {5979}); 
      dt.Rows.Add(new object[] {5979}); 
      dt.Rows.Add(new object[] {5980}); 
      dt.Rows.Add(new object[] {5980}); 
      dt.Rows.Add(new object[] {5980}); 
      dt.Rows.Add(new object[] {5980}); 
      dt.Rows.Add(new object[] {5981}); 
      dt.Rows.Add(new object[] {5981}); 
      dt.Rows.Add(new object[] {5981}); 

      var results = dt.AsEnumerable() 
       .GroupBy(x => x.Field<int>("ParentID")) 
       .Select(x => new { ParentID = x.Key, Count = x.Count() }) 
       .ToList(); 
​