2011-10-13 9 views
1

LINQをテーブルの各フィールドを反復してフィールド名などのフィールドプロパティを取得する簡単な方法はありますか?基本的に、私はちょうどそのようなDBスキーマを表し単純なXML文書を作成したい:LINQを使用してデータベースを反復処理し、スキーマ+データの一般的なXMLレイアウトを生成する

<report> 
     <nameoffirsttable> 
      <field1name>field1data</field1name> 
      <field2name>field2data</field2name> 
      ... 
      <field234name>field234data</field234name> 
     </nameoffirsttable> 
     <nameofsecondtable> 
      ... 
     </nameofsecondtable> 
     <anothersecondtable> 
      ... 
     </anothersecondtable> 
</report> 

これまでのところ、私はウェブ検索で見てきたすべての例は、名前のフィールドへの明示的な参照を示しています。

+0

'System.Data.DataSet'には、DataSetのテーブルをXMLとして書き出すことができる' WriteXml'と 'WriteXmlSchema'メソッドがあります。それは明らかにLINQではないので、答えとしてではなくコメントで言及しますが、あなたのニーズには十分かもしれません。 –

答えて

2

これは、LINQを使用して概説スキーマを生成します:

XElement report = new XElement("report", 
MyDataContext.Mapping.GetTables() 
    .Select(i => 
     new XElement(i.TableName, 
      i.RowType.DataMembers 
      .Select(j => new XElement(j.Name, j.DeclaringType.Type.Name)))); 

ちょうどSystem.Data.LinqとSystem.Xml.Linqを参照してください。

+0

ありがとう!スキーマを反復処理する方法のとても良い例です。フィールドのテーブル名(j.DeclaringType.Type.Name)を使用するのではなく、データを関連付けるのもちょっと難しいです。しかし、私の質問に答えて、何を探したらいいのか教えてくれました! –