ورود

View Full Version : تفاوت بین دو query



sara_t
یک شنبه 13 آبان 1397, 11:01 صبح
سلام

این دو query هر دو یک کار رو انجام میدن . اما کدام یک بهینه تر و بهتر هست ؟با سپاس



var qProduct = _context.Products.Except(_context.Products.Where(c =>c.Id==30))
.OrderByDescending(p => p.Id)
.ToList();







var qProduct= _context.Products.OrderByDescending(p => p.Id)
.ToList();

qProduct.Remove(qProduct.Find(c => c.Id == 30));

Moien Tajik
یک شنبه 13 آبان 1397, 11:59 صبح
کد اول قطعا بهینه تر هست چون شما Query تون رو با استفاده از Where فیلتر کردید و فقط مقادیر لازمتون رو از دیتابیس دریافت میکنید که در این مثال فقط 1 رکورد از سمت دیتابیس به شما بازگشت داده میشه ، در حالی که در Query دوم تمامی مقادیر از دیتابیس دریافت میکنید و بعد تازه روش فیلترتون رو اعمال میکنید.
برای چک کردن سرعت و بهینه بودن Query تون هم پیشنهاد میکنم از LinqPad یا EF Profiler و یا SQL Profiler استفاده کنید.

mr.sirwan
یک شنبه 13 آبان 1397, 12:17 عصر
در ادامه گفته های آغای تاجیک، باید بگم کوئری اولتون رو پیچیده نوشتین درحالی که خیلی راحتتر قابل نوشتنه و اصلا نیازی به Except نیست، به اینصورت:
var qProduct = _context.Products.Where(c => c.Id != 30)
.OrderByDescending(p => p.Id)
.ToList();