繁体   English   中英

将数据集拆分为数据表

[英]Splitting a dataset in to datatables

我有一个正在“尝试”维护和升级的软件系统。 我没有接受过正式的C#培训,只有一门sql。 我大部分有限的经验是Java,C ++。 我们正在使用MSSQL 2005。

我有一个在c#中运行的查询,该查询获取具有1个表和15个左右列的数据集。 每次运行返回的行数都不相同。 第一列是商店编号。 我需要通过storeid将记录分隔到自己的数据表中。 一旦知道了,就可以使用现有方法将其发送到CSV文件。

到目前为止,我已经找到了Datatable.Select,按storeid对其进行排序。

一种选择是从数据集中提取所有唯一的商店标识并将其放入数组。 然后,我可以基于现有的storeid进行查询,并使用foreach将这些行复制或移动到新的数据表中。

如果有人能指出我正确的方向,将不胜感激。

标记

if you know number of tables you can use this methode..

            DataSet ds = new DataSet();
            DataTable dt1 = new DataTable();
            DataTable dt2 = new DataTable();
                dt1 = ds.Tables[0];
                dt2 = ds.Tables[1];

通过storeid对查询进行排序,然后在代码中循环数据表,并在每次storeid更改时创建一个新表。 您也可以使用LINQ进行复制或手动复制。

当然,有几种方法可以做到这一点,但类似的方法应该起作用:

        DataSet dsMain = GetMyMainDataSet();
        DataSet dsTablesById = new DataSet();

        foreach (DataRow row in dsMain.Tables[0].Rows)
        {
            string storeId = row["storeid"].ToString();
            if (!dsTablesById.Tables.Contains(storeId))
            {
                dsTablesById.Tables.Add(storeId);
                foreach (DataColumn col in dsMain.Tables[0].Columns)
                {
                    dsTablesById.Tables[storeId].Columns.Add(col.ColumnName, col.DataType);
                }
            }
            dsTablesById.Tables[storeId].Rows.Add(row.ItemArray);
            dsTablesById.Tables[storeId].AcceptChanges();
        }

dsTablesById将包含您的所有数据表,每个数据表均由不同的storeid值命名。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM