从数据集中提取分组数据

本文关键字:数据 提取 集中 数据集 | 更新日期: 2023-09-27 18:08:04

CountryData:

Keyid  Data1     Data2
200   London      UK
200   Paris       France
200   Vancouver   Canada
201   NYC         US

我在数据集中有这些数据,我想循环并形成一个类似的类对象

Class CountryData
{
 int keyid;
 public struct MyData()
  {string data1, string data2 }
 public MyData  Data ;
}

输出应该看起来像

List countryData=new List((;

这个国家的数据应该包含这样的数据(预期结果(

countryData[0]
           -keyid - 200       
           Data[0].Data1 - London
           Data[0].Data2 - UK
           Data[1].Data1 - Paris
           Data[1].Data2 - France
           Data[2].Data1 - Vancouver
           Data[2].Data2 - Canada
countryData[1]
           -keyid -201     
           Data[0].Data1 - NYC
           Data[0].Data2 - US

我试着根据数据集进行分组,然而,我没有得到如上所述的预期结果:

DataTable dt = ds.Tables[0].AsEnumerable()
                    .GroupBy(r => r["keyid"])
                    .Select(y=>y.FirstOrDefault()).CopyToDataTable();

这应该如何根据/任何其他方法进行分组?提前谢谢。

从数据集中提取分组数据

您可以在foreach语句中手动实现这一点,它可能有点复杂,但它为您提供了所需的相同结构:

            var myMainData = new Dictionary<int, List<Dictionary<string, string>>>();
            var myDataValue = new List<Dictionary<string, string>>();
            var values = new Dictionary<string, string>();
            //get the first key once
            int lastKeyId = Convert.ToInt32(dataSet.Tables["CountryData"].Rows[0]["Keyid"]);
            foreach (DataRow row in dataSet.Tables["CountryData"].Rows)
            {
                int key = Convert.ToInt32(row["Keyid"]);
                if (lastKeyId != key)
                {
                    myMainData.Add(key, myDataValue);  //add this to the dictionary
                    myDataValue.Clear(); //clear previous list value
                    values.Clear(); //clear previous values
                }
                //add new values
                values.Add(row["Data1"].ToString(), row["Data2"].ToString());
                myDataValue.Add(values);
                lastKeyId = key; //set the current key
            }

现在,您可以在代码中的任何位置使用myMainData字典。