繁体   English   中英

如果语句仅选择 linq2xml 查询中的第一个值

[英]If statement selecting only first value in linq2xml query

我有一个正在读取的 XML 文件。 我正在尝试检查 Product.Id 是否在 XML 文件中。 问题:它只读取第一个 XML 产品值。

我有以下 if 语句:

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

用户 select 看起来像这样:

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

select 导致此 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 语句仅检查第一个 Product 条目(ID 1、Name Mouse、Amount 2)。 它不检查第二个条目。

为什么它不检查第二个条目,我该如何修复它以便检查所有条目?

预期的 output:检查所有产品条目的 if 语句,而不仅仅是第一个条目。

select item.Element("UserProducts") ) 之后添加.ToList() ) 并检查foreach循环中的条件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM