دسته بندی ها
19:56 1399/06/08

فرق بین IEnumerable و IQueryable در دستورات انتیتی فریم ورک چیست ؟

مشخصات سوال کننده :
کاربر : pedram_khan     امتیاز کاربر : 277     رتبه کاربر : 6
دسته بندی : Entity Framework

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 6502
پاسخ دهنده : saedbfd 23:18 1399/06/08

تفاوت بین IEnumerable و IQueryable

 

فرق بین Iqueryable و IEnumerable

 

شما در خوندن اطلاعات از دیتابیس از هر دو مورد می تونید استفاده کنید اما تفاوت هایی دارن که در ادامه بهشون اشاره می کنم :

  • وقتی در انتیتی فریم ورک از دستور IQueryable استفاده می کنید، کوئری شما این قابلیت رو داره که دستورات رو به دستورات Sql تبدیل کنه و اطلاعات رو به سمت سرور ارسال کنه و در دیتابیس اجرا کنه در حالی که در IEnumerable دستورات در دیتابیس اجرا نمیشن.

 

  • وقتی از دستور IEnumerable استفاده می کنید همه ردیف هایی که از دیتابیس واکشی میشن ابتدا در حافظه سرور به عنوان یک Object قرار می گیرن.

 

  • در هر دو مورد اگر شما دستورات ToList یا ToArray رو اجرا نکنید، نتیجه کوئری در هر بار فراخوانی مجدد اجرا میشه . مثلا فرض کنید یک کوئری را با استفاده از IQueryable اجرا می کنید ولی ToList نکردید. حالا اگر بخواهید نتیجه این کوئری را در 4 List قرار بدید 4 بار باید کوئری در سمت دیتابیس اجرا شود.

 

  • یکی از تفاوت های اساسی بین این دو این است که اساسا IQueryable یک Expression به عنوان ورودی دریافت می کند ولی IEnumerable یک Func دریافت میکند.

 

  • IEnumerable برای کار با داده ها در حافظه بسیار مناسب است.

 

  • IQueryable بهترین گزینه برای کار با داده های درون Data Source می باشد. چون IQueryable توانایی کار با دیتابیس و دیتاسورس رو به صورت مستقیم دارد.

 

  • یکی از تفاوت های اساسی بین IQueryable و IEnumerable این می باشد که در IEnumerable بعد از فراخوانی اطلاعات کرسر فراخوانی کننده رو به جلو حرکت می کند و شما توانایی زیادی برای جابه جایی بین رکوردهای واکشی شده ندارید.

تفاوتهای دیگه ای هم بین این دو مورد وجود داره که بنده فقط برخی از اونها رو عرض کردم. این لینک تفاوت های بسیار خوبی رو در مورد IQueryable و IEnumerable گفته که توصیه میکنم حتما مطالعه بفرمایید.

ویرایش شده در شنبه 12 شهریور 1401 ساعت 17:50:36
به این پاسخ امتیاز بدهید    2
امتیاز: 1654 رتبه: 1
1 نظر
mohammad-i : پس پیشنهاد میشه بیشتر از IEnumerable استفاده بشه؟ سوال دیگه اینکه تفاوت IList با این دو چیه و پیشنهاد میشه کدوم رو استفاده کنیم؟

امتیاز کاربر : 260   رتبه کاربر : 7   تاریخ ثبت : 12:01 1399/06/12
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود