السلام عليكــم ورحمـة الله وبركاتــه
كان الهدف الرئيسي من اضافة Microsoft لل LINQ في farmework 3.5 هو توحيد طريقة التعامل مع مصادر البيانات المختلفة بحيث انك تكتب نفس الكود للتعامل مع ال Collections و الملفات و قواعد البيانات يعني توحيد واجهة مصادر البيانات المختلفة و ممكن الربط بينهم بسهولة
بالنسبة للموضوع LINQ to XML
كان في الاصدارات السابقة اما نستخدم System.XML classes او نستخدم ADO.NET dataset للتعامل مع ملفات ال XML
و لكن دعنا نري كيفية التعامل مع ملفات XML عن طريق LINQ
بفرض انا لدينا ملف XML يسمي Customers و نريد اضافة و تعديل و استرجاع البيانات الموجودة فيه بالشكل التالي :
<?xml version="1.0" encoding="utf-8" ?> <Customers> <Customer> <Name>Ahmed</Name> <Age>23</Age> </Customer> <Customer> <Name>Mohammed</Name> <Age>25</Age> </Customer> </Customers>
لاحظ بنخزن اسم العميل و السن مثلا
و بفرض ان فيه 2 textboxes و button لعملية الاضافة بالشكل التالي :
Name: <asp:TextBox ID="txtName" runat="server" /> Age: <asp:TextBox ID="txtAge" runat="server" /> <asp:Button ID="butAdd" runat="server" Text="Add Customer" onclick="butAdd_Click" />
و نستخدم LINQ لاضافة عميل جديد بالشكل التالي (بتكلم علي اساس انك عارف LINQ لو مش عارف دور علي كتاب LINQ في الموضوع ده )
//create System.Xml.Linq.XDocument from Customers.xml file
XDocument xmlDoc = XDocument.Load(Server.MapPath("Customers.xml"));
// add new Customer
xmlDoc.Element("Customers").Add(new XElement("Customer",
new XElement("Name", txtName.Text),
new XElement("Age", txtAge.Text)));
// save
xmlDoc.Save(Server.MapPath("Customers.xml"));و ايضا القرأة من الملف و عرض البيانات في GridView بالشكل التالي :
//create System.Xml.Linq.XDocument from Customers.xml file
XDocument xmlDoc = XDocument.Load(Server.MapPath("Customers.xml"));
// get customers
var customers = from customer in xmlDoc.Descendants("Customer")
select new
{
Name = customer.Element("Name").Value,
Age = customer.Element("Age").Value,
};
// bind customers to grid view
gVCustomers.DataSource = customers;
gVCustomers.DataBind();شوف المثال ده LinqToXml.zip


