当聚合c#数据集时,我如何为. load()将DataSet转换为DataTable Array

本文关键字:load DataSet Array DataTable 转换 数据集 | 更新日期: 2023-09-27 18:12:46

我使用的是。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[]要求的最好方法是什么?为什么微软不让我把整个数据集放到第三个参数中?数据集已经包含了一个数据表数组列表!

当聚合c#数据集时,我如何为. load()将DataSet转换为DataTable Array

  • 满足DataTable[]要求的最佳方式是什么?

数据集已经包含了数据表。你可以尝试从下面的表数组(有DataSet accessFile)

DataTableCollection tableCollection = accessFile.Tables;
DataTable[] tablesArray = null;
tableCollection.CopyTo(tablesArray, 0);