2009-06-02 7 views
0

からオブジェクトのコレクションを作成する私は、オブジェクト(またはいくつかのタイプ)を作成する、次のフィールドとして名前、年齢とともにどのようにXML

<DataCollection> 
    <Data> 
    <Name>John</Name> 
    <Age>30</Age> 
    </Data> 
    ... more person 
</DataCollection> 

のようなXMLを持っているコレクション。私が持っている問題の1つは、クラスを作成してlinqを使ってselect newを使用する前に、(私が知っている限り、DataCollectionとDataがある)手前の構造を知らないということです。現在の実装では、各データのXMLを歩み、要素を読み込んでカンマ区切りのリストを作成しています。

これを行うより良い方法はありますか? XMLの目的は、データグリッド内のデータの下に来るすべてのデータを表示することです。

+0

データがより多くのことができますが、このLINQを使用したデータブロックの構造を知らなくても、オブジェクトのコレクションのコレクションを構築することができます1つの列。簡単にするために、私は2つの列しか与えませんでした。 – Nair

答えて

3

FWIWは、ここでは、オブジェクトのコレクションにそのXML文書を有効にしますLINQクエリです:

var coll = from XElement c in doc.Descendants("Data") 
     select new { 
      Name = c.Element("Name").Value, 
      Age = int.Parse(c.Element("Age").Value) 
     }; 

しかし、私は、あなたが本当に探していることに、XML文書をバインドする方法だと思いますDataGridディレクトリtly。 DataGridをDataTableにバインドし、そのWriteXml/ReadXmlメソッドを使用してファイルを読み書きする方法があります。

プレビュー時...私は、入力XMLの構造が不明であるという要件を忘れていました。これで

var coll = from XElement c in loaded.Descendants("Data") 
     select (from XElement d in c.Elements() select d.Value); 

それとも、生成できるCSV:

string csv = string.Join(Environment.NewLine, 
(from XElement c in loaded.Descendants("Data") 
    select string.Join(",", 
    (from XElement d in c.Elements() select d.Value).ToArray()) 
).ToArray()); 
1

私はあなたの質問を理解することを願っています... とにかく - あなたがLinqに言及してからasp.netを使用すると仮定して、辞書があなたの最良の選択です。

あなたはここではそれらについての詳細を見つけることができます:あなたはコンマを使用して、あなたがすべきのようなループを使用できるようにする必要はありませんので、一般的にはhttp://msdn.microsoft.com/en-us/library/xfhwa508.aspx

を、辞書は、キー/値のペアを保持しています。

希望に役立ちます!

0

データが読み込み専用の場合は、XSLTを使用してHtmlテーブルに書式設定することを検討しましたか?ここで

それはの子要素のように思える...私はこれをカバーstackoverflowの上で見つかったarticleである彼らはまだ彼らはまだあなたのグリッド(HTMLテーブル)にレンダリングされるだろうたかったすべてを変更することができます。.. 。

関連する問題