次の構造の XML ドキュメントがあります。
<dipOrders>
<interchangeInfo senderEdiCode="LSC58" senderEdiCodeQal="ZZ" receiverEdiCode="15274" receiverEdiCodeQal="ZZ" syntax="X12" syntaxId="X" syntaxVersion="003010"/>
<order orderNumber="219299" orderDate="2012-12-05T00:00:00" validityDate="2012-12-05T00:00:00">
<buyer name="LEAR MTO">
<partyCode buyerCode="811567924"/>
</buyer>
<supplier name="BRIDGE OF WEIR LEATHER CO">
<partyCode buyerCode="749630"/>
</supplier>
<orderConsignee name="LEAR MEXICAN SEATING CORP">
<partyCode buyerCode="LSC59"/>
<orderLine description="LEA DC 378 HERO 6RSB 5B8" orderNumber="246767" engineeringChangeNumber="N">
<partyCode buyerCode="DC378105H6RSB5B8AA"/>
<cumulativeQuantity date="2012-12-04T00:00:00" quantity="0"/>
<orderQuantity quantity="0" commitmentLevel="Firm" timingQualifier="Weekly" shipDate="2012-12-05T00:00:00"/>
</orderLine>
<orderLine description="LEA DC 378 HERO 6RSB 5V0" orderNumber="246767" engineeringChangeNumber="N">
<partyCode buyerCode="DC378105H6RSB5V0AA"/>
<cumulativeQuantity date="2012-12-04T00:00:00" quantity="0"/>
<orderQuantity quantity="0" commitmentLevel="Firm" timingQualifier="Weekly" shipDate="2012-12-05T00:00:00"/>
<orderQuantity quantity="600" commitmentLevel="Firm" timingQualifier="Weekly" shipDate="2012-12-06T00:00:00"/>
</orderLine>
これは、orderLine アイテムの属性にアクセスする方法です。
List<int> orderNumbers = doc.Descendants("orderLine").Select(x => int)x.Attribute("orderNumber")).ToList();
List<string> descriptions = doc.Descendants("orderLine").Select(x => (string)x.Attribute("description")).ToList();
List<string> buyerCodes = doc.Descendants("orderLine").Select(x => (string)x.Element("partyCode").Attribute("buyerCode")).ToList();
ただし、orderLine は異なる数の orderQuantity ノードを持つことができます。orderLine と orderQuantity の間の適切な関係を取得するには、Linq ステートメントでどのように対処すればよいでしょうか?