Linq to Xml查询子节点

4
<InventoryList>
 <Product xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Id>1</Id>
  <Name>Pizza Ristorante Hawaii</Name>
  <Price>2.99</Price>
  <VariableWeightPrice>€ 8,42 / kg</VariableWeightPrice>
  <Brand>Dr.Oetker</Brand>
  <PackageInfo>355 GR</PackageInfo>
  <categoryString />
  <PictureSmallFilename>1small.jpg</PictureSmallFilename>
  <InformationTakenFrom>Jumbo</InformationTakenFrom>
  <MarketItemUrl></MarketItemUrl>
  <BarCode>4001724819608</BarCode>
  <IsBlackListed>false</IsBlackListed>
  <ItemLists>
    <Item>
        <ListName>in</ListName>
        <Quantity>1</Quantity>
        <QuantityWeight>0</QuantityWeight>
    </Item>
    <Item>
        <ListName>out</ListName>
        <Quantity>2</Quantity>
        <QuantityWeight>0</QuantityWeight>
    </Item>
  </ItemLists>
 </Product>
 <Product xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Id>2</Id>
  <Name>Produto 2</Name>
  <Price>2.99</Price>
  <VariableWeightPrice>€ 5,55 / kg</VariableWeightPrice>
  <Brand>Dr.Oetker</Brand>
  <PackageInfo>355 GR</PackageInfo>
  <categoryString />
  <PictureSmallFilename>1small.jpg</PictureSmallFilename>
  <InformationTakenFrom>Jumbo</InformationTakenFrom>
  <MarketItemUrl></MarketItemUrl>
  <BarCode>4001724819608</BarCode>
  <IsBlackListed>false</IsBlackListed>
  <ItemLists>
    <Item>
        <ListName>out</ListName>
        <Quantity>1</Quantity>
        <QuantityWeight>0</QuantityWeight>
    </Item>
  </ItemLists>
</Product>
</InventoryList>

非常感谢您的帮助。

我有一个XML数据库。

我想返回所有ListName =“out”的产品,但是我尝试的查询只返回第二个产品,我需要它返回第一个和第二个产品。

 var _queryItems = from c in xml.Descendants("Product")
                          where
                              c.Element("ItemLists").Element("Item").Element("ListName").Value == "out"
                          select c;

谢谢 :)
1个回答

6

现在你只是检查了第一个Item元素,而你想要检查是否有任何一个ItemListName匹配"out":

var _queryItems = from c in xml.Descendants("Product") 
                  where c.Element("ItemLists")
                         .Elements("Item").Any( x=> x.Element("ListName").Value == "out") 
                  select c;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接