2009-12-08 2 views
2

XML 파일의 데이터를 강력한 형식의 DataSet으로 읽습니다. 데이터는 여러 테이블에서 끝납니다. DataGrid에 표시 할 비정규보기를 만들기 위해 쿼리를 실행할 수 있습니까?데이터 세트 쿼리

샘플 입력 :

<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 

편집 : 파일 당 여러 테이블에 추가하는 추가해야, 내 실제 데이터는 여러 개의 파일 사이에 분할되는 AFAIK 것 별도의 DataSets에로드해야합니다.

답변

2

예, Linq를 사용하십시오. Linq-to-Datasets이라는 특별한 확장 세트가 있습니다.

당신은 분명히 .NET 3.5이 필요하고 여러 파일 당신이 별도로 TypedDataSet의 인스턴스와 Merge() 해당 인스턴스로 읽을 수있을 것 같은 스키마를 따르는 경우 using System.Data;

을 추가합니다.

+0

파일은 여러 가지 스키마를 따르므로 최소한 Merge()는 작동하지 않습니다. –

+0

테이블 수준에는 병합()도 있습니다. 하지만 당신은 데이터 세트 (들)에 대해 조금 정교하게 다룰 필요가있을 것입니다. 예를 들어, 테이블에는 ID 등이 있습니다. –

+0

예. 내 응용 프로그램은 원래 XmlSerialization을 사용하여 작성되었으며 모든 고유 객체에는 코드에서 고유성을 유지해야하는 키 값이 있습니다. 그로부터 벗어나는 것이 왜 DataSet을 읽는 대신에 변경하려고하는 중대한 부분입니다. DataSet 표현은 일부 객체를 여러 테이블로 나눕니다 (예 : A에 B 배열이 들어있는 경우). 이러한 경우 키가 수동으로 만들어졌습니다. –