Получить данные таблицы 2 из отношения к таблице 1 в коде C #

StackOverflow https://stackoverflow.com/questions/422586

  •  05-07-2019
  •  | 
  •  

Вопрос

У меня есть две таблицы в наборе данных, где поле идентификатора в каждой совпадает. У меня есть связь между двумя таблицами. Как в коде C # получить информацию из таблицы 2, которая относится к информации из таблицы 1?

Я попытался использовать новый DataRow и назначить его с помощью GetChildRow, но по какой-то причине я не могу заставить его работать.

Кроме того, я понимаю, что этот вопрос может быть не столь информативным, дайте мне знать, и я постараюсь дать больше разъяснений.

Это было полезно?

Решение

Ответ отличается (и значительно проще), если ваш DataSet строго типизирован (то есть сгенерирован из файла .xsd). Я предполагаю, что это не тот случай ниже, но если это произнесено.

Для универсальных объектов DataSet ответ во многом зависит от того, что у вас есть, чтобы начать. Если у вас есть просто идентификатор, то, вероятно, проще всего использовать этот идентификатор в элементе выбора соответствующей таблицы данных. Это будет работать для любой (или обеих) таблиц, поскольку будет возвращать массив DataRows с информацией, которую вы ищете.

Если у вас есть родительский DataRow (и кажется, что он у вас есть), то лучший метод для использования зависит от отношения & # 8212; т.е. который является родителем. Если Table1 является вашим родителем, и вы хотите перейти к соответствующим дочерним строкам Table2, вы ищете GetChildRow (лучше всего указать, какое отношение следует соблюдать). Если Table2 является родительским, и вы переходите от DataRow Table1 к родительскому в Table2, вам нужно использовать GetParentRow (опять же, будьте настолько конкретны при определении отношения, насколько вы можете использовать объект отношения, если у вас есть это удобно).

Другие советы

В строго типизированном DataSet каждый объект DataRow будет иметь определенные методы или свойства для каждого отношения. Если у вас есть родительский DataRow и вы хотите перейти к дочерним элементам в таблице 2, это будет множественный метод (т. Е. & Quot; row.GetTable2Rows () "). Если у вас есть ребенок и вы хотите перейти к родителю, это будет единственное свойство (" row.Table2Row ").

Итак, вот что я сделал. Дайте мне знать, если это лучше, если или есть что-то быстрее. Я создал новую таблицу, которая является точной копией таблицы 2, и написал этот код:

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

Затем я могу вызвать одну таблицу в нулевой записи и получить нужное имя. Это работает, но есть ли более эффективный способ?

Комментарий был недостаточно длинным для этого ответа, поэтому я сделаю еще один ответ:

Нет необходимости использовать новую таблицу. Просто используйте массив объектов строк и идите оттуда. Допустим, ваше пространство имен DataSet - «EventData» и я разобью его немного, чтобы не все в одной строке.

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

Затем вы можете действовать в " eventGroup " массив, как вы хотели бы, включая получение первого элемента с помощью eventGroup [0].

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top