PDA

View Full Version : بهینه سازی کد ef



meysam_online2012
یک شنبه 13 خرداد 1397, 13:22 عصر
سلام خدمت دوستان و مهندسین گرامی

ممنون میشم کد زیر رو بهینه کنید یا روش بهینه کردنشو بهم بگین ممنونم




var YearCount = todoListsResults.GroupBy(q => q.DateRelease).OrderByDescending(q => q.Count()).Take(30).AsEnumerable().Select(q => new MyResultYear
{
Year = q.FirstOrDefault().DateRelease != null ? PersianCalendar.ConvertGregorianToPersianYearStrin g(q.FirstOrDefault().DateRelease.Value) : "",
YearCount = q.Any() ? q.Count() : 0,
YearEn = q.FirstOrDefault().DateRelease != null ? q.FirstOrDefault().DateRelease.Value.Year.ToString () : ""
}).ToList();

ali_md110
دوشنبه 14 خرداد 1397, 00:05 صبح
بجای q.FirstOrDefault().DateRelease از q.key استفاده کنید
چون key بیانگر تاریخ گروه بندی شده است و نیاز نیست دوباره بر روی گروه جستجوی FirstOrDefault زد

meysam_online2012
شنبه 19 خرداد 1397, 11:22 صبح
سلام خدمت دوستان و مهندسین گرامی

ممنون میشم کد زیر رو بهینه کنید یا روش بهینه کردنشو بهم بگین ممنونم




var YearCount = todoListsResults.GroupBy(q => q.DateRelease).OrderByDescending(q => q.Count()).Take(30).AsEnumerable().Select(q => new MyResultYear
{
Year = q.FirstOrDefault().DateRelease != null ? PersianCalendar.ConvertGregorianToPersianYearStrin g(q.FirstOrDefault().DateRelease.Value) : "",
YearCount = q.Any() ? q.Count() : 0,
YearEn = q.FirstOrDefault().DateRelease != null ? q.FirstOrDefault().DateRelease.Value.Year.ToString () : ""
}).ToList();



دوستان کسی نظر دیگه ای نداره که بشه این کوئریو سریع تر کرد؟؟؟

ممنونم

ali_md110
شنبه 19 خرداد 1397, 12:51 عصر
OrderByDescending و Take را بعد از
قسمت Tolist() بر روی داده های لود شده بزنید

meysam_online2012
شنبه 19 خرداد 1397, 12:57 عصر
OrderByDescending و Take را بعد از
قسمت Tolist() بر روی داده های لود شده بزنید


اینطوری فک میکنم کوئری بدتر میشه چون اگه بع از tolist بیام take و order کنم اگه مثلا 60 تا رکورد باشه عملیاتو روی شصت تا رکورد انجام میده بعد میگه حالا سی تاشو بگیر

ولی قبلش گفتم سی تا رو بگیر حالا رو این سی تا کار انجام بده