.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 番目のパラメーターに入れさせてくれないのですか? データセットには、データテーブル配列のリストが既に含まれています!