2009-01-07 74 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]获取第一个元素。

相关问题