PDA

View Full Version : سوال: کند بودن عملیات زمان استفاده از Distinc در Entity Framwork



hastiam
یک شنبه 01 تیر 1393, 15:01 عصر
سلام دوستان
من میخوام لیستی از کالاهایی که رسید شدند رو بگیرم مجبورم بگم Distinct همه کالاهایی که رسید شدند ولی از اونجایی که تعداد رکوردها بالای 50000تاست 3 تا 4 دقیقه طول میکشه تا فقط خط زیر رو اجرا کنه،


var getReceipts = context.GoodsReceipts.Select(p => p.GoodsId).Distinct().ToList();

هیچ راه دیگه ای به ذهنم نمیرسه که لیست این کالاها (کالاهای رسید شده بدون تکرار) رو بردارم.:افسرده: فکر میکنم Distinct برای رکوردهای خیلی زیاد قابل استفاده نیست.
ممنون میشم اگه راهنماییم کنید که سرعت گرفتن این لیست بیشتر بشه.

parvizwpf
یک شنبه 01 تیر 1393, 15:18 عصر
ToList رو اگر حذف کنید مشکلی پیش میاد؟
قطعا شما هم نمیخواهید یکجا 5000 دیتا لود کنید . پس میتونید از Skip,Take برای پیچینگ کردن دیتا استفاده کنید و اون تعداد مورد نطر رو بیارید

hastiam
یک شنبه 01 تیر 1393, 16:26 عصر
ToList رو اگر حذف کنید مشکلی پیش میاد؟
قطعا شما هم نمیخواهید یکجا 5000 دیتا لود کنید . پس میتونید از Skip,Take برای پیچینگ کردن دیتا استفاده کنید و اون تعداد مورد نطر رو بیارید
دوست عزیز ممنون از پاسختون، ولی من نیاز دارم همه کالاهایی که تا الان رسید شدند رو بگیرم بنابراین اول باید همه رکوردها رو بگیرم مثلا بگم فقط 700 تای آخر رو بگیر ممکنه کالایی ثبت شده باشه که تواین 700 تا رکورد نباشه مثلا رسید 850ام باشه اونوقت این کالا رو تو لیست نهایی یعنی getReceipts ندارم.

aroshanzamir
یک شنبه 01 تیر 1393, 16:32 عصر
اصلا چرا شما داری از Distinc استفاده می کنی
کارش : عناصری را که فقط یک بار در مجموعه تکرار شده باشند بر می گردان (متمایز ها را )

parvizwpf
یک شنبه 01 تیر 1393, 16:33 عصر
خب شما tolist نزن چون خودش کلی بار ایحاد میکنه. گفتم شما بیا از paging استفاده کن بعدش. یا تو این مورد sp بنویس .البته اینها چیرایی هست که به من به ذهنم میرسه . بهتره دوستان دیگه هم نظر بدن.