previous question에서 논리적으로 XML 요소를 그룹화하는 방법에 대해 물어 보았습니다. 그 대답은 Linq 쿼리를 중첩하는 것이 었습니다.Linq/XML : XML 요소 내에서 그룹화 결과가 올바르게 표시됩니다. 내부 조인을 사용합니다!
문제는 이것이 중첩 쿼리를 왼쪽으로 결합하는 효과가 있다는 것입니다.
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"로 시작하는 미국의 도시와 카운티를 나열하고 싶은 말은하자 왼쪽 결합 효과를 원한다. 나는 문자 "Y"로 시작하는 도시를 실제로 포함하는 주와 카운티를보고 싶습니다.
나는 이것을 할 수있는 몇 가지 방법을 생각할 수 있지만, 모두가 끈적하고 우아하지 않은 것처럼 보입니다. 원하는 효과를 얻기 위해 생각할 수있는 가장 깨끗한 방법은 무엇입니까?
우수! 익명 유형을 사용하여 중첩 된 그룹화를 수행하는 방법을 알려 주셔서 감사합니다. :) –