1.4.2 用LINQ to XML 对 XML 文件进行处理
<?xml version="1.0" encoding="utf-8" ?> <Data> <Products> <Product Name="West Side Story" Price="9.99" SupplierID="1"></Product> <Product Name="Assassins" Price="14.99" SupplierID="2"></Product> <Product Name="Frogs" Price="13.99" SupplierID="1"></Product> <Product Name="Sweeney Todd" Price="10.99" SupplierID="3"></Product> </Products> <Suppliers> <Sopplier Name="Solely Sondheim" SupplierID="1"></Sopplier> <Sopplier Name="CD-by-CD-by-Sondheim" SupplierID="2"></Sopplier> <Sopplier Name="Barbershop CDs" SupplierID="3"></Sopplier> </Suppliers> </Data>
XDocument doc = XDocument.Load("data.xml"); var filtered = from p in doc.Descendants("Product") join s in doc.Descendants("Sopplier") on (int)p.Attribute("SupplierID") equals (int)s.Attribute("SupplierID") where (decimal)p.Attribute("Price") > 10 orderby (string)s.Attribute("Name"), (string)p.Attribute("Name") select new { SupplierName = (string)s.Attribute("Name"), ProductName = (string)p.Attribute("Name") }; foreach(var v in filtered) { Console.WriteLine("Supplier={0};Product={1}",v.SupplierName,v.ProductName); }