我正在使用 .NET 4.0。我正在尝试将许多具有相同模式的数据集聚合到一个数据集中。每个源数据集应包含与所有其他数据集相同的三个表名。现在,我可能假设数据都是唯一的,即使跨表和数据集也是如此。我正在尝试使用 .Load() 函数,但我被困在第三个参数上。我可能会误解 .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[] 要求的最佳方式是什么?- 为什么微软不让我将整个数据集放入第三个参数中?一个数据集已经包含一个数据表数组列表!