using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.Linq; using System.Reflection; using System.Xml.Linq; class Program { static void Main(string[] args) { XElement xml = XElement.Load("Employee.xml"); var query = from p in xml.Descendants("person") join s in xml.Descendants("id") on (int)p.Element("id") equals (int)s.Attribute("id") select new { FirstName = p.Element("firstname").Value, LastName = p.Element("lastname").Value, Amount = s.Attribute("salaryyear").Value }; foreach (var record in query) { Console.WriteLine("Employee: {0} {1}, Salary {2}", record.FirstName, record.LastName, record.Amount); } } }