Форум программистов, компьютерный форум, киберфорум
Наши страницы

LINQ

Войти
Регистрация
Восстановить пароль
 
Solyanik
3 / 3 / 1
Регистрация: 19.04.2014
Сообщений: 32
#1

Формирование xml, порядковый номер элемента - LINQ

18.08.2015, 22:37. Просмотров 506. Ответов 3
Метки нет (Все метки)

Добрый день!

Помогите, пожалуйста, мне надо в XML документе в атрибут записывать порядковый номер элемента из запроса LINQ. Другими словами номер "итерации" что ли.
Разобраться хочу на простом пример ниже:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
            var people = new[]
            {
                new {FirstName = "Иван", Age = 32},
                new {FirstName = "Петр", Age = 25},
                new {FirstName = "Егор", Age = 27}
                ...
            }
 
            XElement contacts =
                        new XElement("People",
                            from c in people
                            select new XElement("Person", new XAttribute("ID", ???),
                                     new XElement("FirstName", c.FirstName),
                                     new XElement("Age", c.Age)
                                   )
                        );
Чтобы xml был такой (атрибут ID элемента Person):
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<People>
  <Person ID="1">
    <FirstName>Иван</FirstName>
    <Age>32</Age>
  </Person>
  <Person ID="2">
    <FirstName>Петр</FirstName>
    <Age>25</Age>
  </Person>
  <Person ID="3">
    <FirstName>Егор</FirstName>
    <Age>27</Age>
  </Person>
  ...
</People>
Возможно ли так сделать? Как правильнее и быстрее?
Предполагается что в реальной задаче элементов будет порядка 2000, может тогда вообще стоит формировать xml не линком?

Заранее спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.08.2015, 22:37
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Формирование xml, порядковый номер элемента (LINQ):

Правильное формирование XML файла - LINQ
Добрый вечер друзья помогите правильно сформировать XML файл. Написал метод который формирует XML ublic void SaverAgenda(string...

Xml.linq: проверка существования элемента - LINQ
Всем привет, кто знает, как проверить наличие элемента в файле xml с помощью xml.linq?

Linq 2 XML : Выбрать значение элемента - LINQ
Добрый день! Не могу разобраться... Есть: &lt;?xml version='1.0' encoding='utf-8'?&gt; &lt;octopus&gt; &lt;columns&gt; &lt;column&gt; ...

Удаление элемента в файле XML через ListBox - LINQ
private void bDel_Click(object sender, EventArgs e) { string fileName = &quot;base.xml&quot;; XDocument doc =...

Поиск нужного места в XML и добавление в него нового элемента - LINQ
День добрый! нужна ваша подсказка т.к. сам неделю уже мучаюсь.. есть простенькая XML: &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; ...

порядковый номер желаемого элемента - C++
Здравствуйте. Нужно , чтобы указывало порядковый номер элемента массива, вводимого самим. Не знаю как лучше объяснить, короче... Нужно...

3
OwenGlendower
Супер-модератор
Эксперт .NET
8643 / 7648 / 2807
Регистрация: 17.03.2014
Сообщений: 15,019
Записей в блоге: 1
19.08.2015, 00:13 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Solyanik Посмотреть сообщение
Возможно ли так сделать?
C#
1
2
3
4
5
6
7
XElement contacts =
            new XElement("People", people.Select((p, idx) => 
                    new XElement("Person", new XAttribute("ID", idx+1),
                         new XElement("FirstName", p.FirstName),
                         new XElement("Age", p.Age)
                    ))
            );
Цитата Сообщение от Solyanik Посмотреть сообщение
Как правильнее и быстрее?
Предполагается что в реальной задаче элементов будет порядка 2000, может тогда вообще стоит формировать xml не линком?
2000 это не так много. LINQ вполне подходит. Если скорость не будет устраивать, то можно будет переключится на XmlTextWriter.
1
Metall_Version
2116 / 1253 / 415
Регистрация: 04.03.2014
Сообщений: 4,094
Завершенные тесты: 2
19.08.2015, 00:16 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Solyanik, в Select второй параметр это индекс (отсчет от нуля)
C#
1
2
3
4
5
6
7
            XElement contacts = new XElement("People",
                people.Select( (x, i) =>
                                        new XElement("Person",
                                            new XAttribute("ID", i),
                                            new XElement("FirstName", x.FirstName),
                                            new XElement("Age", x.Age)
                                            )));
1
Solyanik
3 / 3 / 1
Регистрация: 19.04.2014
Сообщений: 32
19.08.2015, 08:12  [ТС] #4
OwenGlendower, Metall_Version - спасибо вам большое!!!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.08.2015, 08:12
Привет! Вот еще темы с ответами:

Узнать порядковый номер элемента - jQuery
Так допустим у меня есть 5 вот таких кнопок на странице &lt;input type=&quot;button&quot; id=&quot;knopka&quot; value=&quot;КНОПКА&quot;&gt; Знаю что подсчет элементов на...

Определить порядковый номер элемента - JavaScript
Добрый день, у меня есть структура подобного вида &lt;div class=&quot;tabs_calendar&quot;&gt; &lt;div class=&quot;tab_calendar_event_global&quot;&gt; &lt;/div&gt; ...

Порядковый номер элемента в массиве - Turbo Pascal
Подскажите пожалуйста, как найти порядковый номер максимального элемента в массиве?

Определить порядковый номер элемента последовательности - Pascal
Всем привет! помогите пожалуйста срочно решить задачи №2. Определить порядковый номер элемента последовательности 21, 22, 23,…,2n,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru