[英]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.