Sobes.tech
Junior — Middle

IEnumerable va IQueryable ni qanday ajratish mumkin va ularni qaysi hollarda ishlatish kerak?

sobes.tech AI

AIdan javob

IEnumerable va IQueryable kolleksiyalar bilan ishlash uchun interfeyslar bo'lib, ular turli xulq va maqsadga ega:

  • IEnumerable<T> — xotirada kolleksiyalarni aylanib chiqish uchun ishlatiladi. Ma'lumotlarga bo'lgan so'rovlar darhol bajariladi va barcha LINQ operatsiyalari mijoz tomonida (xotirada) ishlanadi.

  • IQueryable<T> — IEnumerable'ni kengaytiradi va so'rovlarni tuzishga imkon beradi, masalan, SQL so'rovlariga aylantirilishi mumkin. So'rov bajarilishi kechiktiriladi, ya'ni uni aylanib chiqish vaqtigacha, va operatsiyalar ma'lumot manbasi tomonida (masalan, ma'lumotlar bazasi) bajariladi.

Qachon ishlatish kerak:

  • IEnumerable — agar ma'lumotlar allaqachon xotirada bo'lsa yoki mahalliy kolleksiyalar bilan ishlayotgan bo'lsangiz.
  • IQueryable — agar siz uzoqdagi manbaga (BD) so'rov tuzishingiz va tanlashni optimallashtirish uchun filtrlash va saralashni serverda bajarishni istasangiz.

Misol:

IQueryable<User> usersQuery = dbContext.Users.Where(u => u.Age > 18);
// usersQuery bo'ylab yurish paytida ma'lumotlar bazasiga so'rov tuziladi va bajariladi

IEnumerable<User> usersList = usersQuery.ToList();
// Ma'lumotlar xotiraga yuklanadi va keyingi operatsiyalar lokal ravishda bajariladi