查看: 196|回复: 0

[.NET源码] C# linq to xml 简单示例

发表于 6 天前
句号论坛

data.xml

  1. 1 <?xml version="1.0" encoding="utf-8" ?>
  2. 2 <Data>
  3. 3 <Products>
  4. 4 <Product Name="West Side Story" Price="9.99" SupplierID="1" />
  5. 5 <Product Name="Assassins" Price="14.99" SupplierID="2" />
  6. 6 <Product Name="Frogs" Price="13.99" SupplierID="1" />
  7. 7 <Product Name="Sweeney Todd" Price="10.99" SupplierID="3" />
  8. 8 </Products>
  9. 9
  10. 10 <Suppliers>
  11. 11 <Supplier Name="Solely Sondheim" SupplierID="1" />
  12. 12 <Supplier Name="CD-by-CD-by-Sondheim" SupplierID="2" />
  13. 13 <Supplier Name="Barbershop CDs" SupplierID="3" />
  14. 14 </Suppliers>
  15. 15 </Data>
复制代码

通过 linq to xml ,查找价格超过10的产品,并打印供应商名称与产品名称;

  1. 1 XDocument doc = XDocument.Load("data.xml");
  2. 2 var filtered = from p in doc.Descendants("Product")
  3. 3 join s in doc.Descendants("Supplier")
  4. 4 on (int)p.Attribute("SupplierID")
  5. 5 equals (int)s.Attribute("SupplierID")
  6. 6 where (decimal)p.Attribute("Price") > 10
  7. 7 select new
  8. 8 {
  9. 9 ProductName = (string)p.Attribute("Name"),
  10. 10 SupplierName = (string)s.Attribute("Name")
  11. 11 };
  12. 12
  13. 13 foreach (var v in filtered)
  14. 14 {
  15. 15 Console.WriteLine("SupplierName={0} , ProductName=小贝", v.SupplierName, v.ProductName);
  16. 16 }
复制代码

输出

SupplierName=CD-by-CD-by-Sondheim , ProductName=Assassins
SupplierName=Solely Sondheim , ProductName=Frogs
SupplierName=Barbershop CDs , ProductName=Sweeney Todd

参考资料

1、深入理解C#(第2版);



太阳http代理AD
回复

使用道具 举报

关闭

站长推荐上一条 /1 下一条