1

保守とアップグレードを「試みている」ソフトウェア システムがあります。正式な C# トレーニングは受けておらず、SQL のクラスは 1 つしかありません。私の限られた経験のほとんどは、Java、C++ に関するものです。MSSQL 2005 を使用しています。

1 つのテーブルと 15 程度の列を持つデータセットを取得するクエリを c# で実行しています。返される行数は、実行されるたびに異なります。最初の列は storeid です。storeid ごとにレコードを独自のデータテーブルに分割する必要があります。それをCSVファイルに送信するための既存の方法があることを確認したら。

これまでのところ、Datatable.Select を見つけて、storeid で注文しました。

1 つのオプションは、データセットからすべての一意のストア ID を取得し、それらを配列に入れることです。次に、既存の 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

確かにこれを行うにはいくつかの方法がありますが、次のような方法で機能するはずです。

        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 に答える
0

storeid でクエリを並べ替えてから、データテーブルをコードでループし、storeid が変更されるたびに新しいテーブルを作成します。LINQ を使用してコピーすることも、手動でコピーすることもできます。

于 2012-10-24T01:46:50.883 に答える