在previous question中,我詢問了如何邏輯分組XML元素,然後我得到了答案,即嵌套Linq查詢。Linq/XML:在XML元素內正確分組結果 - 使用內部聯接!
問題是,這具有左連接嵌套查詢的效果。例如,假設我想列出在美國以字母「Y」開頭,由國家分組的所有城市和縣:
XElement xml = new XElement("States",
from s in LinqUtils.GetTable<State>()
orderby s.Code
select new XElement("State",
new XAttribute("Code", s.Code),
new XAttribute("Name", s.Name),
from cy in s.Counties
orderby cy.Name
select new XElement("County",
new XAttribute("Name", cy.Name),
from c in cy.Cities
where c.Name.StartsWith("Y")
orderby c.Name
select new XElement("City",
new XAttribute("Name", c.Name)
)
)
)
);
Console.WriteLine(xml);
此輸出:
<States>
<State Code="AK" Name="Alaska ">
<County Name="ALEUTIANS EAST" />
<County Name="ALEUTIANS WEST" />
<County Name="ANCHORAGE" />
<County Name="BETHEL" />
...
<County Name="YAKUTAT">
<City Name="YAKUTAT" />
</County>
<County Name="YUKON KOYUKUK" />
</State>
<State Code="AL" Name="Alabama ">
<County Name="AUTAUGA" />
...
etc.
我不要求左連接效果;我只想看看實際上包含以字母「Y」開頭的城市的州和縣。
我可以想出幾種方法來做到這一點,但他們都顯得很笨拙和不雅。爲了達到預期效果,您可以想到什麼是最簡單的方法?
非常好!感謝您向我展示如何使用匿名類型進行嵌套分組 - 這會讓您獲得答案功勞! :) –