1

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

我有一个在 c# 中运行的查询,它获取一个包含 1 个表和 15 个左右列的数据集。每次运行时返回的行数都不同。第一列是 storeid。我需要通过 storeid 将记录分隔到他们自己的数据表中。一旦我知道了,就有一种将其发送到 CSV 文件的现有方法。

到目前为止,我找到了 Datatable.Select,按 storeid 排序。

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

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

标记

4

3 回答 3

1
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];
于 2012-10-24T03:57:28.253 回答
0

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

于 2012-10-24T01:46:50.883 回答
0

当然有几种方法可以做到这一点,但这样的事情应该有效:

        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 值命名。

于 2012-10-24T02:02:42.890 回答