2
我正在使用.NET 4.0。我試圖將具有相同模式的許多數據集合到一個數據集中。每個源數據集應包含與所有其他數據集相同的三個表名。目前,我可能會假設數據將全部是唯一的,即使在表和數據集中也是如此。我試圖使用.Load()函數,但我卡在第三個參數。我可能會誤解.Load()實際上的目的,如果這不是完成此任務的最佳方式,那麼請儘量讓我知道。這是我到目前爲止有:聚合C#數據集時,如何將DataSet轉換爲.Load()的DataTable數組?
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 []需求的最佳方式是什麼? - 爲什麼微軟不讓我把整個數據集放入第三個參數?一個數據集已經包含一個數據表列表!
您是否嘗試過提供數據集的'表屬性?類似'dataSet.Tables.OfType().ToArray()'。 –
2013-05-09 14:26:34
它似乎......一旦我通過了這個下一個錯誤,我就會知道更多:「Table myTable不屬於這個DataSet。」我認爲這是因爲我沒有正確地初始化我的目標數據集,否則.Tables.OfType().ToArray()可能會創建與我預期不同的數組。更新上面的代碼。 –
averyoo7
2013-05-09 14:33:41
它可能試圖將一個未關聯的'DataTable'添加到'DataSet'。這些表格將與源數據集相關聯。 – 2013-05-09 14:35:39