我有一个我试图维护和升级的软件系统。我没有正式的c#培训,只有一类sql。我的大部分经验都是使用Java,C ++。我们正在使用MSSQL 2005。
我在c#中运行查询,获取包含1个表和15个左右列的数据集。每次运行时返回的行数都不同。第一列是storeid。我需要通过storeid将记录分隔到自己的数据表中。有了这个,就有了将其发送到CSV文件的现有方法。
到目前为止,我找到了Datatable.Select,按商店订购。
一个选项是从数据集中提取所有唯一商店并将它们放入数组中。然后我可以根据现有的storeid进行查询,并使用foreach将这些行复制或移动到新的数据表中。
如果有人能指出我正确的方向,那将非常感激。
标记
答案 0 :(得分: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];
答案 1 :(得分:0)
通过storeid命令查询,然后在代码中循环数据表,并在每次storeid更改时创建一个新表。您也可以使用LINQ将其复制或手动复制。
答案 2 :(得分: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值命名。