문제

DataSet에 각 테이블의 ID 필드가 동일한 두 개의 테이블이 있습니다.두 테이블 사이에 관계가 있습니다.C# 코드에서 Table1의 정보와 관련된 Table2의 정보를 어떻게 가져오나요?

새 DataRow를 사용하고 GetChildRow를 사용하여 할당하려고 시도했지만 어떤 이유로 작동하지 않는 것 같습니다.

또한 이 질문이 그다지 유익하지 않을 수 있다는 점을 이해합니다. 알려주시면 더 자세한 설명을 제공하도록 노력하겠습니다.

도움이 되었습니까?

해결책

DataSet이 강력한 형식인 경우(예:.xsd 파일에서 생성됨).나는 그것이 아래의 경우가 아니라고 가정할 것입니다. 그러나 그것이라면 말하십시오.

일반 DataSet 개체의 경우 대답은 시작하기 위해 무엇을 보유하고 있는지에 따라 크게 달라집니다.단순히 ID가 있는 경우 관련 DataTable의 선택 항목에서 ID를 사용하는 것이 가장 간단할 것입니다.이는 찾고 있는 정보가 포함된 DataRow 배열을 반환하므로 테이블 중 하나(또는 둘 다)에 대해 작동합니다.

상위 DataRow가 있고 그럴 가능성이 높은 경우 사용하는 가장 좋은 방법은 관계에 따라 다릅니다.그것은 부모입니다.Table1이 상위이고 관련 Table2 하위 행으로 이동하려는 경우 GetChildRow를 찾고 있습니다(따라야 할 관계를 최대한 구체적으로 지정하는 것이 가장 좋습니다).Table2가 상위이고 Table1 DataRow에서 Table2의 상위로 이동하는 경우 GetParentRow를 사용하는 것이 좋습니다(다시 말하지만 관계를 식별하는 데 최대한 구체적이어야 합니다. 편리한 경우 관계 개체를 사용하세요). ).

다른 팁

강하게 유형 된 데이터 세트에서 각 Datarow 객체는 각 관계에 대한 특정 방법 또는 속성을 갖습니다. 부모 Datarow가 있고 표 2의 어린이를 탐색하려는 경우 복수화 된 방법 (예 : "row.gettable2rows ()")입니다. 자녀가 있고 부모에게 탐색하고 싶다면 단일 속성 ( "row.table2row")이됩니다.

그래서 여기 내가 한 일이 있습니다. 이것이 최선인지 더 빠른 것이 있는지 알려주십시오. 표 2의 정확한 복제본 인 새 테이블을 만들고이 코드를 썼습니다.

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

그런 다음 레코드 제로의 한 테이블을 호출하고 필요한 이름을 얻을 수 있습니다. 작동하지만 더 효과적인 방법이 있습니까?

이 응답에 대해서는 댓글이 충분히 길지 않았으므로 다른 답변을 드리겠습니다.

새 테이블을 사용할 필요가 없습니다. 행 객체의 배열을 사용하고 거기에서 이동하십시오. 데이터 세트 네임 스페이스가 "EventData"라고 말하면 한 줄에 모두 나오지 않도록 조금 분류 할 것입니다.

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

그런 다음 EventGroup [0]을 사용하여 첫 번째 요소에 들어가는 것을 포함하여 "EventGroup"배열에서 행동 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top