C#xml到linq的查询

本文关键字:查询 linq C#xml | 更新日期: 2023-09-27 18:24:57

我仍然在为XML到Linq的语法而挣扎。

我有一个XML结构,试图在其中查询产品的不同价格。

这是XML:

  <product>
    <description>productname</description>
    <properties>
      <property>
        <key>RetailPrice</key>
        <value>100.00 $</value>
      </property>
      <property>
        <key>StockPrice</key>
        <value>80.00 $</value>
      </property>
    </properties>
  </product>

XML文件中有大量的<product>,所以我试图查询特定产品名称的价格。

有人知道怎么做吗?

C#xml到linq的查询

您可以使用XElement类。请参阅相关文章:当XElement具有相同名称时,如何使用LINQ查询来获取XElement值。

做一些类似的事情:

string[] prices = xml.Elements("product")
.Where(x => x.Element("description").Value == productName)
.Element("properties")
.Elements("property")
.Where(x => x.Element("key").Value == "RetailPrice")
.Select(x => x.Element("value").Value)
.ToArray();

您可以使用C#的null传播操作符进行额外的null检查。

string[] prices = xml.Elements("product")
.Where(x => x.Element("description")?.Value == productName)
.Element("properties")
.Elements("property")
.Where(x => x.Element("key")?.Value == "RetailPrice")
.Select(x => x.Element("value").Value)
.ToArray();