بعد از این درس چه کاری میتوانی انجام بدهی؟
- مجموعه generic بسازی
- داده را با LINQ فیلتر و تبدیل کنی
- اجرای deferred را آگاهانه مدیریت کنی
C# را ساده بفهم
C# مثل یک کارگاه مهندسی با قراردادهای روشن است؛ نوعها، کلاسها و interfaceها کمک میکنند اجزای اپ، وبسرویس یا بازی جدا اما هماهنگ کار کنند.
LINQ خوانا است، اما query پیچیده را به چند متغیر نامدار تقسیم کن و هزینه تکرار enumeration را بسنج.
چرا مهم است؟ فهرست مرتب از یک نوع مشخص است.
اولین تمرین تو: سفارشهای بالاتر از ۳۵۰۰۰۰ را جدا و بر اساس مبلغ نزولی مرتب کن.
از یک مثال کوچک شروع کن
LINQ روی IEnumerable<T> اغلب deferred است؛ یعنی پرسوجو هنگام پیمایش اجرا میشود. اگر نتیجه باید در همان لحظه ثابت شود از ToList یا ToArray استفاده کن. زنجیره را کوتاه و نامدار نگه دار تا هدف کسبوکار پشت چند operator گم نشود.
۱. مدل typed بساز
Order شناسه، مبلغ و وضعیت پرداخت دارد.
۲. فیلتر کن
Where فقط سفارشهای پرداختشده را نگه میدارد.
۳. جمع و materialize
Sum مقدار را محاسبه و ToList نتیجه را ثابت میکند.
LINQ خوانا است، اما query پیچیده را به چند متغیر نامدار تقسیم کن و هزینه تکرار enumeration را بسنج.
سه قطعهای که باید بفهمی
List<T>
فهرست مرتب از یک نوع مشخص است.
Dictionary<K,V>
دسترسی کلیدی به مقدار میدهد.
LINQ
پرسوجو را بهعنوان ساختار typed داخل زبان فراهم میکند.
گزارش سفارشهای پرداختشده
مدیر فروش فقط سفارشهای پرداختشده را میخواهد و باید جمع آنها را ببیند. LINQ این جریان را به چند عمل خوانا تقسیم میکند.
قطعهها را به ترتیب درست بچین
روی هر قطعه بزن تا وارد پاسخ شود؛ برای برگرداندن دوباره روی آن بزن. با دکمههای جابهجایی هم میتوانی بدون کشیدن و رهاکردن ترتیب را اصلاح کنی.
بررسی ساختار تمرین
این صفحه کامپایلر کامل C# نیست؛ ساختار تمرین را صادقانه بررسی میکند و خروجی مورد انتظار را نشان میدهد. برای اجرای کامل به محیط رسمی همان زبان نیاز است.
یک بخش را تغییر بده و دکمه بررسی را بزن.
راهنماییها مرحلهای هستند؛ اول خودت پیام خطا را بخوان.
سفارشهای بالاتر از ۳۵۰۰۰۰ را جدا و بر اساس مبلغ نزولی مرتب کن.
این سه اشتباه را انجام نده
اجرای چندباره query پرهزینه
استفاده از collection غیر generic
زنجیره LINQ طولانی بدون نام مرحله
با 5 سؤال مطمئن شو که مفهوم را گرفتهای
Where چه کاری میکند؟
ToList چه اثری دارد؟
مزیت LINQ نسبت به رشته query خام چیست؟
کدام روش نشان میدهد این درس را واقعاً فهمیدهای؟
کدام رفتار احتمال خطا را در همین موضوع بیشتر میکند؟
فهمیدی، تغییر دادی، نتیجه را توضیح دادی؟
فقط در این صورت درس را کامل کن و سراغ مرحله بعد برو.