2009-01-07 79 views
2

我在DataSet中有兩個表,每個ID字段相同。我有兩個表格之間的關係。我如何在C#代碼中從Table2中獲取與Table1上的信息相關的信息?從C#中與Table1的關係獲取Table2數據代碼

我試過使用一個新的DataRow並通過使用GetChildRow分配它,但由於某種原因,我似乎無法使它工作。

另外,我明白這個問題可能不是那種內容豐富,讓我知道,我會盡量提供更多的澄清。

回答

1

如果您的DataSet屬於強類型(即從.xsd文件生成),則答案不同(並且更容易)。我會假設情況並非如此,但如果它是說出來的話。

對於通用的DataSet對象,答案在很大程度上取決於您持有的開始。如果您只有一個ID,那麼在相關DataTable的select中使用該ID可能最簡單。這對任何一個(或兩個)表都有效,因爲它將返回一個DataRows數組和你正在查找的信息。

如果您有一個父DataRow(看起來您可能會這樣做),那麼使用的最佳方法取決於關係—,即哪一個是父級。如果Table1是您的父級,並且您想要導航到相關的Table2子行,那麼您正在尋找GetChildRow(最好是儘可能詳細地告訴它要跟隨哪個關係)。如果Table2是父級,並且您正在從Table1 DataRow導航到Table2中的父級,那麼您將需要使用GetParentRow(同樣,請儘可能詳細地標識關係,因爲您可以使用關係對象(如果您有它的便利性)— )。

+0

我正在使用強類型的DataSet。 Table1是父項,我試圖從GroupName的Table2中提取一列。 讓我知道如果你需要更澄清的評論,我知道我問了一個非常大的問題。 – Matt 2009-01-07 23:35:13

1

在強類型的DataSet中,每個DataRow對象都將具有特定的每個關係的方法或屬性。如果你有一個父DataRow並且想要導航到表2中的子項,它將是一個複數方法(即「row.GetTable2Rows()」)。如果你有一個孩子並且想要導航到父項,它將是一個單獨的屬性(「row.Table2Row」)。

+0

所以我現在有這樣的代碼: currentDataSet.GroupAttendingEventTable [groupAttendingEventCounter] .GetGroupTableRows(); 如何從該代碼中獲取信息?我正在嘗試從GroupTable中獲取GroupName字段。對不起,我問了這麼多問題,我希望我知道更多。 – Matt 2009-01-08 16:13:13

0

所以這就是我所做的。讓我知道如果這是最好的,或者有更快的事情。我創建了一個新的表,它是表2的精確副本,並寫了這個代碼:

currentDataSet.GroupTableOneRow.Clear(); 
currentDataSet.GroupAttendingEventTable[groupAttendingEventCounter].GetGroupTableRows().CopyToDataTable(currentDataSet.GroupTableOneRow, LoadOption.OverwriteChanges); 

那我就記錄爲零撥打一個表,並得到我所需要的名字。它有效,但有沒有更有效的方法?

0

一個註釋沒有此響應足夠長的時間,所以我會讓它另一個答案:

沒有必要使用新表。只需使用一組行對象並從那裏開始。假設你的DataSet命名空間是「EventData」,我會分解它一點,所以它不是全部在一行上。

// The parent row 
EventData.GroupAttendingEventRow groupAttendingEvent = currentDataSet.GroupAttendingEventTable[groupAttendingEventCounter]; 
// an array of children rows 
EventData.GroupTableRow[] eventGroup = groupAttendingEvent.GetGroupTableRows(); 

然後,您可以根據需要對「eventGroup」數組採取行動,包括使用eventGroup [0]獲取第一個元素。

相關問題