1.2.LINQ texnologiyasi va umumiy tiplar(generic types) LINQ so'rovlari .NET Framework 2.0 versiyasida joriy qilingan umumiy tiplarga asoslangan. So'rovlarni yozishni boshlashdan oldin umumiy tiplar haqida chuqur bilim talab qilinmaydi. Biroq, ikkita asosiy tushuncha tushunilishi lozim:
1.List umumiy to'plam sinfining namunasini yaratganimizda, siz "T" ni ro’yxatda saqlanadigan ob'ektlar turi bilan almashtirasiz. Masalan, satrlar ro'yxati List, Customer ob’ektlari ro’yxati esa List ko'rinishida ifodalanadi. Umumiy ro’yxat oʻz elementlarini Obʼyekt sifatida saqlaydigan toʻplamlarga nisbatan koʻp afzalliklarni beradi. Agar Customer ni List roʻyxatiga qoʻshishga harakat qilinsa, kompilyatsiya vaqtida xatoga duch kelish mumkin. Umumiy to'plamlardan foydalanish oson, chunki kompilyatsiya vaqti(run-time) ni translyatsiya qilishingiz shart emas.
2. IEnumerable - bu foreach yordamida umumiy to'plam sinflarini sanab o'tish imkonini beruvchi interfeysdir. Umumiy to'plam sinflari IEnumerable ni , ArrayList kabi umumiy bo'lmagan to'plam sinflari esa IEnumerable-ni qo’llab quvvatlaydi.
LINQ so’rovi o’zgaruvchilari IEnumerable yoki IQueryable kabi yoziladi. Agar siz IEnumerable sifatida terilgan so’rov o'zgaruvchisini ko'rsangiz, bu shunchaki so'rov bajarilganda nol yoki undan ko’p Customer ob’ektlari ketma-ketligini hosil qilishini bildiradi.
IEnumerable customerQuery =
from cust in customers
where cust.City == "London"
select cust;
foreach (Customer customer in customerQuery)
{
Console.WriteLine(customer.LastName + ", " + customer.FirstName);
}
Agar xohlansa, var kalit so'zidan foydalanib, umumiy sintaksisdan saqlanish ham mumkin. var kalit so'zi kompilyatorga from bandida ko'rsatilgan ma'lumotlar manbasiga qarab so'rov o'zgaruvchisi turini aniqlashni buyuradi. Quyidagi misol oldingi misol bilan bir xil tuzilgan kodni ishlab chiqaradi:
var customerQuery2 =
from cust in customers
where cust.City == "London"
select cust;
foreach(var customer in customerQuery2)
{
Console.WriteLine(customer.LastName + ", " + customer.FirstName);
}
Var kalit so'zi o'zgaruvchining turi aniq bo'lsa yoki guruh so'rovlari orqali ishlab chiqarilgan ichki o'rnatilgan umumiy turlarni aniq ko'rsatish unchalik muhim bo'lmaganda foydali bo'ladi. Umuman olganda, agar siz var dan foydalansangiz, bu sizning kodingizni boshqalar uchun o'qishni qiyinlashtirishi mumkin.