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