2009-12-08 3 views
2

Я читаю данные из XML-файлов в строго типизированный DataSet. Данные заканчиваются в нескольких таблицах; могу ли я запускать запросы против него, чтобы создать денормализованное представление для отображения в DataGrid? входЗапросить DataSet

Пример:

<PeopleFile> 
    <address> 
     <street>123 Some Street</street> 
     <town>Anytown</town> 
     <resident> 
      <first>Jane</first> 
      <last>Doe</last> 
     </resident> 
     <resident> 
      <first>John</first> 
      <last>Doe</last> 
     </resident> 
    </address> 
    <address> 
     <street>456 Tree Street</street> 
     <town>Westwood</town> 
     <resident> 
      <first>Mary</first> 
      <last>Jones-Smith</last> 
     </resident> 
     <resident> 
      <first>Mike</first> 
      <last>Smith</last> 
     </resident> 
     <resident> 
      <first>Kate</first> 
      <last>Smith</last> 
     </resident> 
    </address> 
</PeopleFile> 

Желаемый результат:

123 Some Street Anytown  Jane Doe 
123 Some Street Anytown  John Doe 
456 Tree Street Westwood Mary Jones-Smith 
456 Tree Street Westwood Mike Smith 
456 Tree Street Westwood Kate Smith 

EDIT: Я хотел бы добавить, что в дополнение к нескольким таблицам в файле, мой реальные данные также разделены между несколькими файлами, которые AFAIK будет требуют загрузки в отдельный DataSets.

ответ

2

Да, используйте Linq. Существует специальный набор расширений, называемый Linq-to-Datasets.

Вам потребуется .NET 3.5, очевидно, и добавить using System.Data;

Если несколько файлов следовать той же схеме, вы должны быть в состоянии прочитать их на отдельные экземпляры TypedDataSet и Merge() тех случаях.

+0

Файлы следуют нескольким различным схемам, поэтому при минимальном объединении() ing не будет работать. –

+0

Существует также Merge() на уровне таблицы. Но вам нужно будет немного рассказать о наборах данных, например, в таблицах есть идентификаторы и т. Д. –

+0

Да. Мое приложение было первоначально написано с использованием XmlSerialization, и все отдельные объекты имели ключевые значения, уникальность которых должна поддерживаться в коде. Выход из этого - значительная часть того, почему я пытаюсь перейти на чтение в DataSets. Представление DataSet разбило некоторые объекты на несколько таблиц (например, где A содержал массив из B); в этих случаях ключи создавались вручную. –

Смежные вопросы