2

.NET 4.0 を使用しています。同一のスキーマを持つ多くのデータセットを単一のデータセットに集約しようとしています。各ソース データセットには、他のすべてのデータセットと同じ 3 つのテーブル名が含まれている必要があります。今のところ、テーブルやデータセット間であっても、データはすべて一意であると想定しています。.Load() 関数を使用しようとしていますが、3 番目のパラメーターに行き詰まっています。.Load() の実際の目的を誤解している可能性があります。これがこのタスクを達成する最善の方法でない場合は、ぜひお知らせください。これが私がこれまでに持っているものです:

private AccessFileCollection accessFileCollection;
private DataSet allAccessData;

public void AggregateCollection()
{
    foreach (AccessFile accessFile in accessFileCollection.Files.Values)
    {
        foreach (DataTable dt in accessFile.Dataset.Tables)
        {
            if (allAccessData.Tables[dt.TableName] == null)
            { allAccessData.Tables.Add(new DataTable(dt.TableName)); }
        }
        allAccessData.Load(accessFile.Dataset.CreateDataReader(), 
            LoadOption.PreserveChanges,
            accessFile.Dataset.Tables);
    }
}

//AccessFileCollection is a custom class which implements .GetEnumerator() and also contains:
private Dictionary<int, AccessFile> accessFileCollection; //With a get/set called ".Files"

//AccessFile is a custom class that contains:
private DataSet ds; //With a get/set called ".Dataset"

MSDN は、.Load() のメソッド シグネチャを提供します。

public void Load(
    IDataReader reader,
    LoadOption loadOption,
    params DataTable[] tables // <-- How do I satisfy this? What do I provide out of accessFile?
)

だから、私の質問は次のとおりです。 - .Load() はここで適切ですか? - DataTable[] の要件を満たす最善の方法は何ですか? - なぜ Microsoft は、データセット全体を 3 番目のパラメーターに入れさせてくれないのですか? データセットには、データテーブル配列のリストが既に含まれています!

4

1 に答える 1

0
  • DataTable[] の要件を満たす最善の方法は何ですか?

DataSet には既に DataTables が含まれています。以下からtablesArrayを試すことができます(DataSet accessFileを持っています)

DataTableCollection tableCollection = accessFile.Tables;
DataTable[] tablesArray = null;
tableCollection.CopyTo(tablesArray, 0);
于 2013-10-04T08:44:04.027 に答える