簡體   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