【发布时间】:2013-03-07 15:34:56
【问题描述】:
我正在尝试了解如何组合 LINQ-to-XML 和 LINQ-to-SQL 查询并执行连接。
具体来说,我有一个包含城市、县和州信息的 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..
【问题讨论】:
-
好的,我想知道为什么版主关闭了这个问题,你认为我会浪费我的时间在注册后问一个反问......我使用了来自不同帖子的数据,这只是因为与我的项目有关的数据有个人详细信息....
-
@user2141957 关闭您的问题的不是版主,而是社区的 5 位成员。它被关闭的最可能原因是因为你真的没有问问题,或者至少你写问题的方式,很难弄清楚你在问什么。我认为您的问题可能是可以挽救的,但您需要提供一些说明。具体来说,
state是什么?是收藏吗?您引用了一个 SQL,但没有迹象表明它是如何发挥作用的。 -
@user2141957 我提出的一个建议是阅读此博客条目:Writing the perfect question。这是一篇非常好的文章,由我们排名最高的成员之一撰写,内容是关于如何写一个好问题来获得好的答案。很有帮助
-
@psubsee2003:我试图将数据以表格形式放置,但格式化标签不受限制,因此它看起来像一个段落而不是一个表格,我尝试了 HTML,我一定是浪费了30 分钟试图找出在这里输入我的问题的最佳方式,最后 5 个人关闭了我的帖子,认为我在这里浪费了我的时间。ugggghhhh
-
@psubsee2003 但要回答您的问题,状态是表格中的列。所以是县和市。
标签: c# xml linq-to-sql linq-to-xml