Оператор if выбирает только первое значение в запросе linq2 xml - PullRequest
0 голосов
/ 21 июня 2020

У меня читается файл XML. Я пытаюсь проверить, есть ли Product.Id в файле XML. Проблема: он считывает только первые XML значения продукта.

У меня есть следующий if-оператор:

    if ((int)user.ElementAt(0).Element("Product").Element("Id") == product.Id)
    {
       // Do some logic
    }

Выбор пользователя выглядит так:

    var user = from item in doc.Descendants("User")
               where (string)item.Element("Username") == username
               select item.Element("UserProducts");

Результат выбора: XML:

<UserProducts>
  <Product>
    <Id>1</Id>
    <Name>Mouse</Name>
    <Amount>2</Amount>
  </Product>
  <Product>
    <Id>2</Id>
    <Name>Keyboard</Name>
    <Amount>1</Amount>
  </Product>
</UserProducts>

Оператор if проверяет только первую запись продукта (ID 1, Name Mouse, Amount 2). Он не проверяет вторую запись.

Почему он не проверяет вторую запись и как это исправить, чтобы он проверял все записи?

Ожидаемый результат: оператор if, который проверяет все товарные записи, а не только первая запись.

1 Ответ

0 голосов
/ 21 июня 2020

Добавьте .ToList() после select item.Element("UserProducts") и проверьте состояние в foreach l oop

...