Aida-Hagh / EF-Core

Learn EF Core
1 stars 0 forks source link

IQueryable و IEnumerable #19

Open Aida-Hagh opened 4 months ago

Aida-Hagh commented 4 months ago

با IQueryable درخواست‌ها به صورت Lazy اجرا میشود(فقط داده‌های مورد نیاز را از دیتابیس دریافت می‌کند). در این مثال، SQL تنها زمانی اجرا می‌شود که ToList() فراخوانی شود چون query از نوع IQueryable است.

IQueryable<Employee> query = context.Employees.Where(e => e.Age > 30);
var employees = query.ToList(); // SQL query is executed here

با IEnumerable درخواست‌ها به صورت Eager اجرا می شود(تمام داده‌ها را از دیتابیس دریافت می‌کند). در این مثال، ToList() اول تمام داده‌ها را از دیتابیس دریافت می‌کند و سپس شرط Where بر روی داده‌های موجود در حافظه اعمال می‌شود.

List<Employee> employees = context.Employees.ToList();  // دریافت تمامی کارمندان از دیتابیس

IEnumerable<Employee> processedEmployees = employees// استفاده از IEnumerable برای پردازش در حافظه
    .Where(e => e.Age > 30)
    .Select(e => 
    {
        e.Salary = e.Salary * 1.1; // افزایش حقوق به میزان 10%
        return e;
    });
foreach (var employee in processedEmployees)
{
    Console.WriteLine($"Name: {employee.Name}, New Salary: {employee.Salary}");
}