我想了解如何将LINQ-to-XML和LINQ-to-SQL查询结合起来并执行连接。在内部连接的XML元素中对结果进行分组
具体来说,我有一个SQL表,其中包含城市,县和州的信息,我可以查询它与LINQ to SQL,但在同一个查询中,我想加入具有相同的SQL行州和/或县,并生成XML作为输出的一部分。
这里是大约什么我的表如下所示:
╔═════╦══════════════╦════════════════╦═══════╗
║ IDX ║ CITY ║ COUNTY ║ STATE ║
╠═════╬══════════════╬════════════════╬═══════╣
║ 1 ║ YAKUTAT ║ ALEUTIANS EAST ║ AK ║
║ 2 ║ city-1 ║ ALEUTIANS EAST ║ AK ║
║ 3 ║ city-2 ║ ALEUTIANS EAST ║ AK ║
║ 4 ║ city-3 ║ ALEUTIANS WEST ║ AK ║
║ 5 ║ city-4 ║ ALEUTIANS WEST ║ AK ║
║ 6 ║ city-5 ║ ALEUTIANS WEST ║ AK ║
║ 7 ║ xyz ║ ANCHORAGE ║ AK ║
║ 8 ║ abc ║ BETHEL ║ AK ║
║ 9 ║ lmnop ║ WYOMING ║ NY ║
║ 10 ║ pqrst ║ WARSAW ║ NY ║
║ 11 ║ defg ║ WARSAW ║ NY ║
╚═════╩══════════════╩════════════════╩═══════╝
这就是想什么我我的XML输出的样子。我希望加入将同一县的所有城市分组为同一个县节点下的节点,然后将所有县作为状态节点的子节点进行分组。
<State>AK</State>
<County>ALEUTIANS EAST</County>
<City>YAKUTAT</City>
<City>city-1</City>
<City>city-2</City>
<County>ALEUTIANS WEST</County>
<City>city-3</City>
<City>city-4</City>
<City>city-5</City>
<County>ANCHORAGE</County>
<City>xyz</City>
<County>BETHEL</County>
<City>abc</City>
<State>NY</State>
<County>WYOMING</County>
<City>lmnop</City>
<County>WARSAW</County>
<City>pqrst</City>
<City>defg</City>
我有这个部分的工作,我能够从我的数据库成功地选择行,我能写输出作为XML,但我不能让嵌套作为子节点的市,县数据状态,我错过了加入部分,并不清楚如何做到这一点。
XDocument xDoc = new XDocument(new XElement("States",
(from states in state.Database
select new XElement(new XElement("State",states.State),
new XElelment("County",states.County),
new XElelment("City",state.City))));
xDoc.Save("C:\\states.xml")
这是我得到的输出。正如你所看到的,我在没有层次结构的情况下获得了数据库中所有城市,州和县的完整列表。
<State>AK</State>
<County>ALEUTIANS EAST</County>
<City>YAKUTAT</City>
<State>AK</State>
<County>ALEUTIANS EAST</County>
<City>city-1</City>
<State>AK</State>
<County>ALEUTIANS EAST</County>
<City>city-2</City>
<State>AK</State>
<County>ALEUTIANS WEST</County>
<City>city-3</City>
<State>AK</State>
<County>ALEUTIANS WEST</County>
<City>city-4</City>
....and so on..
ok我想知道为什么版主们关闭了这个问题,你是否认为我会浪费我的时间在注册后问一个修辞问题......我使用了来自不同职位的数据,这只是因为与我的项目有关的数据有perosnal细节.... – user2141957 2013-03-07 21:04:52
@ user2141957这不是版主谁关闭你的问题,但社区的5个成员。关闭它的最可能的原因是因为你确实没有提出问题,或者至少是你写这个问题的方式,所以很难弄清楚你问的是什么。我认为你的问题可能是可挽救的,但你需要提供一些澄清。具体来说,什么是“国家”?它是一个集合吗?你引用了一个SQL,但没有迹象表明这是如何发挥作用的。 – psubsee2003 2013-03-08 00:51:11
@ user2141957我会做的一个建议是阅读这个博客条目:[写出完美的问题](http://tinyurl.com/so-hints)。这是一篇非常好的文章,由我们的一位最高级别的成员撰写,就如何写出一个很好的问题来获得良好的答案。这是非常有帮助 – psubsee2003 2013-03-08 00:53:29