السلام عليكم ورحمة الله وبركاته ...
قامت شركة مايكروسوفت بإصدار ما يسمى بـLINQ و تنطق Link، وهي اختصار Language Integrated Query.
LINQ هي Componant تم بنائه و تجربته من قبل شركة مايكروسوفت تتيح الاستعلام عن البيانات في بيئة الدوت نت عن طريق لغة شبيهة بالـ SQL ، و هي جزء من نسخة الدوت نت 3.5.
تستطيع LINQ الاستعلام عن البيانات في المصفوفات Arrays و الكلاسات Class و ملفات الـ XML و قواعد البيانات و لكن لابد لهذه البيانات أن تكون بصيغة Objects أو أن يتم تحويلها إلى Objects لكي يتم الاستعلام عن هذه البيانات.
و نستطيع القول أن SQL لغة للاستعلام عن البيانات في قواعد البيانات، و LINQ لغة استعلام عن البيانات في الذاكرة على شكل Objects، فنستطيع ترتيب المصفوفة بـ LINQ بدلاً من ألقورثمات الترتيب المعروفة، و نستطيع البحث عن عناصر داخل المصفوفة بدلاً من ألقورثمات البحث التقليدية.
و هذه بعض الأمثله عن كيفية الإستعلام في LINQ:
المثال الأول:
الاستعلام عن كل القيم التي أصغر من 5 في المصفوفة Array:
كود PHP:
public void Linq1() {
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
var lowNums =
from n in numbers
where n < 5
select n;
Console.WriteLine("Numbers < 5:");
foreach (var x in lowNums) {
Console.WriteLine(x);
}
}
و سيطبع هذا الكود كل الأرقام الموجودة في المصفوفة numbers و التي قيمتها أقل من 5، و تخيل سهولة هذا الكود مقارنةً بالكود العادي للبحث و الطباعة.
ولابد أن نراعي أن طريقة كتابة Syntax لغة LINQ تختلف قليلاً عن SQL، فشكل جملة LINQ
كود PHP:
FROM [element] IN [ClassObject]
WHERE [condition]
SELECT [fields]
و كود الـ SQL شكلة كالتالي:
كود PHP:
SELECT [Fields]
FROM [TableName]
WHERE [condition]
مثال 2:
الإستعلام من داخل List و سوف نستعلم عن كل المنتجات Products التي تكون فيها قيمة UnitsInStock تساوي الصفر.
كود PHP:
public void Linq2() {
List products = GetProductList();
var soldOutProducts =
from p in products
where p.UnitsInStock == 0
select p;
Console.WriteLine("Sold out products:");
foreach (var product in soldOutProducts) {
Console.WriteLine("{0} is sold out!", product.ProductName);
}
}
مع العلم أن LINQ مدعومة في السي# النسخة 3.0. و من الممكن تحميل Extension لكي تعمل على نسخة الدوت نت 2.0.
كما أود التنبيه أن LINQ من الممكن أن تستخدم للاستعلام من قواعد البيانات و الاستعلام داخل ملفات الـ XML
وبالمرفقات يوجد كتاب يشرح LINQ بالتفصيل باللغه العربيه