2009-08-25 15 views
0

私はXMLとしてLinqクエリの結果を返す方法を尋ねました。答えはhereです。Linq/XML:XML要素内で正しくグループ化された結果

しかし、1つの小さな問題があります。結果はXML内で論理的にグループ化されません。たとえば:

XElement xml = new XElement("States", 
    from s in MyStates 
    from cy in s.Counties 
    from c in cy.Cities 
    where s.Code == "NY" 
    orderby s.Code, cy.Name, c.Name 
    select new XElement("State", 
    new XAttribute("Code", s.Code), 
    new XAttribute("Name", s.Name), 
    new XElement("County", 
     new XAttribute("Name", cy.Name), 
     new XElement("City", 
     new XAttribute("Name", c.Name) 
    ) 
    ) 
) 
); 

Console.WriteLine(xml); 

出力の形式は次のとおりです。

<State Code="NY" Name="New York "> 
    <County Name="WYOMING"> 
    <City Name="WARSAW" /> 
    </County> 
</State> 
<State Code="NY" Name="New York "> 
    <County Name="WYOMING"> 
    <City Name="WYOMING" /> 
    </County> 
</State> 
<State Code="NY" Name="New York "> 
    <County Name="YATES"> 
    <City Name="BELLONA" /> 
    </County> 
</State> 
<State Code="NY" Name="New York "> 
    <County Name="YATES"> 
    <City Name="MIDDLESEX" /> 
    </County> 
</State> 
<State Code="NY" Name="New York "> 
    <County Name="YATES"> 
    <City Name="PENN YAN" /> 
    </County> 
</State> 
<State Code="NY" Name="New York "> 
    <County Name="YATES"> 
    <City Name="RUSHVILLE" /> 
    </County> 
</State> 

の代わり:

<State Code="NY" Name="New York "> 
    <County Name="WYOMING"> 
    <City Name="WARSAW" /> 
    <City Name="WYOMING" /> 
    </County> 
    <County Name="YATES"> 
    <City Name="BELLONA" /> 
    <City Name="MIDDLESEX" /> 
    <City Name="PENN YAN" /> 
    <City Name="RUSHVILLE" /> 
    </County> 
</State> 

どのように私が望むような結果が表示されるのですか?

答えて

1

あなたが望む結果を得るには、LINQ to XMLクエリをネストする必要があると思います。外側のクエリでは、別の状態をクエリし、次にその状態の郡を取得する内部クエリ...次にその郡の都市を取得する別の内部クエリを実行する必要があります。

関連する問題