0

LINQ to XMLを初めて使用したので、我慢してください。SQLServerに挿入する値のWebサービスで生成されたXMLファイルを解析しています。XMLデータは次のようになります。

...
    <row>
        <value>912EOE01L0K0</value>
        <value>4369     </value>
        <value>PTO   </value>
        <value>PTO03 </value>
        <value>3 Days PTO     </value>
        <value>1</value>
        <value>0</value>
        <value>0</value>
        <value>1</value>
        <value>0</value>
        <value>0</value>
        <value>7.36</value>
        <value>0</value>
        <value>0</value>
    </row>
    <row>
        <value>912EOE01L0K0</value>
        <value>4369     </value>
        <value>SICK  </value>
        <value>SCK07 </value>
        <value>7 Sick Days    </value>
        <value>2.34</value>
        <value>0</value>
        <value>0</value>
        <value>2.34</value>
        <value>0</value>
        <value>0</value>
        <value>35.979999</value>
        <value>0</value>
        <value>0</value>
    </row>
...

解析を実行しているC#クラスは、可変数の行と各行内の値を処理するために動的である必要がありますが、解析を開始すると各行にいくつの値が含まれるかはわかります。行内のすべての値を1つのオブジェクトにグループ化し(ピボットしますか?)、可能であれば文字列とカンマで区切ります。これを行うには、すべての値をリストに入れ、それらを繰り返し処理して、すべてのXを「行」オブジェクトにグループ化します。Xは各行の値の数ですが、もっと多くの値が必要なようです。これを行うLINQ-yの方法。行ごとにすべての値を単一のオブジェクトにグループ化するLINQクエリはありますか?

ありがとう。

4

1 に答える 1

0

これは、Linq-to-Xml の優れたアプリケーションです。XML を XDocument にロードしたら、次のように記述できます。

XDocument MyXDoc;
// TODO, load or parse MyXDoc

string[] CsvList = MyXDoc.Root.Elements("row")
    .Select(row => 
        String.Join(", ", row.Elements("value").Select(val => (string)val).ToArray() )
     )
    .ToArray();

これにより、値が CSV 文字列として表された各行の配列が得られます。

于 2012-05-08T00:17:54.960 に答える