دسته بندی ها
19:56 1399/06/08
فرق بین IEnumerable و IQueryable در دستورات انتیتی فریم ورک چیست ؟
دوستان فرق بین IEnumerable و IQueryable در دستورات انتیتی فریم ورک چیست ؟
موقعی که میخوایم یه سری رکورد رو از دیتابیس واکشی کنیم چه فرقی می کنه که از کدوم یکی از این ها استفاده کنیم ؟
مشخصات سوال کننده :
کاربر : pedram_khan
امتیاز کاربر : 277
رتبه کاربر : 6
به این سوال امتیاز بدهید
0
تعداد بازدید این سوال : 6502
پاسخ دهنده : saedbfd
23:18 1399/06/08
تفاوت بین IEnumerable و IQueryable
شما در خوندن اطلاعات از دیتابیس از هر دو مورد می تونید استفاده کنید اما تفاوت هایی دارن که در ادامه بهشون اشاره می کنم :
- وقتی در انتیتی فریم ورک از دستور 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
1 نظر
mohammad-i :
پس پیشنهاد میشه بیشتر از IEnumerable استفاده بشه؟ سوال دیگه اینکه تفاوت IList با این دو چیه و پیشنهاد میشه کدوم رو استفاده کنیم؟
امتیاز کاربر : 260
رتبه کاربر : 7
تاریخ ثبت : 12:01 1399/06/12
آخرین سوالات ثبت شده
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- نمایش صفحه در پنجره جدید با کلیک روی لینک (تگ a) در Asp
- افزودن مقادیر به صورت دستی به List دریافت شده از ریپازیتوری
سوالات مرتبط
- رفع خطا در مایگریشن - Specify ON DELETE NO ACTION or ON UPDATE NO ACTION
- استفاده از دستور Group By در انتیتی فریم ورک
- محاسبه مجموع فروش بازاریاب و فروشنده در Sql Server
- کاربرد متد AsNoTracking در انتیتی فریم ورک
- فرق بین انتیتی فریم ورک با LINQ چیست
- دلیل خطای Keyword not supported: data source در انتیتی فریم ورک Code First
- ایجاد کانکشن استرینگ داینامیک در WPF (تغییر پایگاه داده و سرور در نرم افزار)
- تبدیل کاراکترهای عربی به فارسی در سی شارپ | تبدیل کاراکتر "ی" به "ی" در WPF
- جا به جایی بین رکوردها در DataGrid در WPF و نمایش در اطلاعات تکست باکس
- نحوه جوین جداول و نمایش داده های دلخواه از 2 جدول در انتیتی فریم ورک
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.
 
ورود