یکی از جذابترین لحظات کار با LINQ و EF زمانی است که به خاطر افزایش حجم دیتا، کوئری خود را بازنگری کرده و آن را بهینه میکنید.
برای یک مسئله میتوان کوئریهای متنوعی نوشت که همگی به یک جواب میرسند؛ ولی زمان اجرا و میزان حافظهی مصرفی متفاوتی دارند. یک سناریوی رایج در نوشتن کوئریهای LINQ، ترکیب اطلاعات جداول مختلف و محاسبهی یک عدد معنی دار از ترکیب آن هاست.
برای نمونه دو Entity زیر ...
عملگرهای اتصال (Join Operators)
• Join
• GroupJoin
• Zip
عملگر Join
این عملگر همانند inner join در SQL، دو مجموعه را بر اساس کلیدهای مرتبط که از طریق پارامترها به آن ارسال میشوند، با یکدیگر ترکیب میکند.
در عملیات Join، یک توالی ورودی که به آن توالی خارجی (Outer Sequence) گفته میشود با یک توالی دیگر که به آن توالی داخلی (Inner Sequence) میگوییم، بر اساس کلیدهای م ...
عملگرهای تولید Generation Operator
عملگرهای تولید، برای ما توالی ایجاد میکنند و تفاوتهای عمدهای با سایر عملگرهای پرس و جو دارند که در بخش زیر به آنها اشاره میکنیم:
1- هیچ توالی ورودی را دریافت نمیکنند.
2- این عملگرها بصورت متد الحاقی پیاده سازی نشدهاند و بصورت متدهای استاتیک در کلاس Enumerable قرار گرفتهاند.
امضاء زیر مربوط به متد Empty میباشد: ...
عملگرهای تبدیل Conversion Operator
عملگرهای پرس و جوی تبدیل، توالیهایی را که از جنس <IEnumerable<T هستند، به انواع دیگر مجموعه تبدیل میکنند.
از عملگرهای پرس و جوی زیر میتوان برای تبدیل توالیها استفاده کرد : OfType Cast ToArray ToList ToDictionary
ToLookup
عملگر OfType
این عملگر عناصری از توالی را که نوع آنها را مشخص میکنیم باز میگرداند.
...
در ادامهی سری آموزشی LINQ، عملگرهای پرس و جوی مرتب سازی، گروه بندی و مجموعه را بررسی خواهیم کرد.
عملگرهای مرتب سازی Ordering Operators
این عملگرها عناصر توالی ورودی را به خروجی ارسال میکنند؛ با این تفاوت که توالی خروجی مرتب شده، توالی ورودی است.
عملگر OrderBy
این عملگر توالی ورودی را بر اساس کلیدی که مشخص میکنیم مرتب میکند.
مث ...
بررسی عبارت Join
عبارت Join برای ایجاد ارتباط بین عناصر دو توالی استفاده میشود. پیش نیاز این عملیات وجود یک مقدار در عناصر توالی ورودی است که بتوان از طریق آن برابری دو عنصر را اهراز کرد.
عبارت join، دو توالی را به عنوان ورودی دریافت میکند. هر عنصر در توالی اول باید یک خصوصیت داشته باشد که بتوان آن را با یک خصوصیت از عناصر توالی دوم مقایسه کرد. عبارت Join، مقادیر مشخص شده را از طریق کلمهی کلیدی equals مقایسه ...
سبکهای مختلف نوشتن Query در LINQ تعریف Query: عبارتی که اطلاعات را از منبع داده، بازیابی میکند، پرس و جو یا Query میگوییم. بطور کلی عملیات پرس و جو شامل سه بخش زیر میشود: 1- مشخص کردن منبع داده 2- ایجاد پرس و جو (Query) 3- اجرای پرس و جو // The Three Parts of a LINQ Query:
// 1. منبع داده
int[] numbers = new int[7] { 0, 1, 2, 3, 4, 5, 6 };
// 2. ایجاد پرس و جو
// numQuery is an IEnumerable<int>
...