با 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}");
}
با IQueryable درخواستها به صورت Lazy اجرا میشود(فقط دادههای مورد نیاز را از دیتابیس دریافت میکند). در این مثال، SQL تنها زمانی اجرا میشود که ToList() فراخوانی شود چون query از نوع IQueryable است.
با IEnumerable درخواستها به صورت Eager اجرا می شود(تمام دادهها را از دیتابیس دریافت میکند). در این مثال، ToList() اول تمام دادهها را از دیتابیس دریافت میکند و سپس شرط Where بر روی دادههای موجود در حافظه اعمال میشود.