Я пытаюсь понять, как я могу комбинировать запросы 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..
ОК, я задаюсь вопросом, почему модераторы закрыли этот вопрос, не думайте, что я буду тратить свое время на заданный риторический вопрос после регистрации ... Я использовал данные из другого сообщения, что только потому, что данные, касающиеся моего проекта имеет perosnal детали .... – user2141957
@ user2141957 Это не модераторы, которые закрыли ваш вопрос, но 5 членов сообщества. Наиболее вероятная причина, по которой она была закрыта, заключалась в том, что вы действительно не задавали вопрос или, по крайней мере, так, как вы писали вопрос, очень сложно понять, что вы спрашиваете. Я думаю, что ваши вопросы могут быть спасены, но вам нужно дать некоторые разъяснения. В частности, что такое 'государство'? Это коллекция? Вы ссылаетесь на SQL, но нет никаких указаний на то, как это вступает в игру. – psubsee2003
@ user2141957 одно предложение, которое я бы сделал, читает эту запись в блоге: [Написание идеального вопроса] (http://tinyurl.com/so-hints). Это очень хорошая статья, написанная одним из наших высокопоставленных членов о том, как написать хороший вопрос, чтобы получить хорошие ответы. Это очень полезно – psubsee2003