Форум программистов, компьютерный форум, киберфорум
Наши страницы
LINQ
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
Solyanik
4 / 4 / 1
Регистрация: 19.04.2014
Сообщений: 32
1

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

18.08.2015, 22:37. Просмотров 1038. Ответов 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 файла
Добрый вечер друзья помогите правильно сформировать XML файл. Написал метод...

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

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

Удаление элемента в файле XML через ListBox
private void bDel_Click(object sender, EventArgs e) { ...

Поиск нужного места в XML и добавление в него нового элемента
День добрый! нужна ваша подсказка т.к. сам неделю уже мучаюсь.. есть...

3
OwenGlendower
Супер-модератор
Эксперт .NET
9311 / 8174 / 3488
Регистрация: 17.03.2014
Сообщений: 16,218
Записей в блоге: 1
19.08.2015, 00:13 2
Лучший ответ Сообщение было отмечено Solyanik как решение

Решение

Цитата Сообщение от 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
2118 / 1255 / 516
Регистрация: 04.03.2014
Сообщений: 4,094
Завершенные тесты: 2
19.08.2015, 00:16 3
Лучший ответ Сообщение было отмечено Solyanik как решение

Решение

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
4 / 4 / 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

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

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

Узнать порядковый номер элемента
Так допустим у меня есть 5 вот таких кнопок на странице &lt;input type=&quot;button&quot;...


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

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

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