1. مهمان گرامی، جهت ارسال پست، دانلود و سایر امکانات ویژه کاربران عضو، ثبت نام کنید.
    بستن اطلاعیه

LINQ and Generic Types (انواع جِنِریک و LINQ.)

شروع موضوع توسط AftabGardoon ‏11/3/19 در انجمن ASP.NET

Tags:
  1. مدیر بازنشسته☕

    تاریخ عضویت:
    ‏15/8/17
    ارسال ها:
    5,336
    تشکر شده:
    42,669
    امتیاز دستاورد:
    113
    Query های LINQ براساس انواع جنریک می باشند که در ورژن 2.0 از .NET Framework معرفی شدند. شما به دانش عمیق از جنریک ها قبل از شروع نوشتن query ها ندارید. به هرحال ممکن است بخواهید دو مفهوم اساسی را درک کنید:


    1. وقتی نمونه ای از یک مجموعه ی جنریک مانند List ایجاد می کنید، نوع آبجکت ها را که در لیست حفظ خواهند شد جایگزین T خواهید کرد. برای مثال لیستی از رشته ها با عنوانList بیان شده اند و لیستی از آبجکت های Customer به عنوان List بیان می شوند. یک لیست جنریک به طور جدی تایپ شده اند و مزایای زیادی برای مجموعه هایی که عناصر خود را به عنوان Object ذخیره می کنند، دارد. اگر سعی کنید یک Customer به یک List اضافه کنید، در زمان کامپایل یک خطا دریافت خواهید کرد. استفاده از مجموعه های جنریک آسان می باشد، زیرا مجبور به اجرای run-time type-casting نیستید.
    2. IEnumerable اینترفیسی می باشد که گروه های جنریک را قادر می سازد تا با استفاده از عبارت foreach شمرده شوند. گروه های مجموعه ی جنریک از IEnumerable تنها به عنوان گروه های مجموعه ی غیرعمومی (non-generic) پشتیبانی می کند، به عنوان مثال ArrayList که از IEnumerable پشتیبانی می کند.
     
    کوکی♥❄ و MajiD.JD از این پست تشکر کرده اند.
  2. مدیر بازنشسته☕

    تاریخ عضویت:
    ‏15/8/17
    ارسال ها:
    5,336
    تشکر شده:
    42,669
    امتیاز دستاورد:
    113
    متغیرهای IEnumerable در query های LINQ:
    متغیرهای LINQ query با عنوان IEnumerable یا یک نوع استخراج شده مانند IQueryable تایپ می شوند. وقتی که یک متغیر query را مشاهده می کنید که با عنوان IEnumerable تایپ شده باشد، فقط به این معناست که وقتی که اجرا می شود، query یک ترتیبی از صفر یا آبجکت های Customer ایجاد خواهد کرد.

    کد:
         IEnumerable customerQuery =‎
    ‎    from cust in customers
    ‎    where cust.City == "London" ‎
    ‎    select cust;‎
     
    foreach (Customer customer in customerQuery)‎
    ‎{‎
    ‎    Console.WriteLine(customer.LastName + ", " + customer.FirstName);‎
    ‎}‎
     
    کوکی♥❄ و MajiD.JD از این پست تشکر کرده اند.
  3. مدیر بازنشسته☕

    تاریخ عضویت:
    ‏15/8/17
    ارسال ها:
    5,336
    تشکر شده:
    42,669
    امتیاز دستاورد:
    113
    اجازه ی بررسی عمومی نوع بیانیه ها به کامپایلر (Letting the Compiler Handle Generic Type Declarations)
    اگر تمایل داشته باشید می توانید با استفاده از کلمه ی کلیدی از ترکیب عمومی (generic) جلوگیری کنید. لغت کلیدی var ،کامپایلر را ساخته تا با نگاه کردن به منبع داده ی تعیین شده به شکل from به نوع متغیر یک query پی ببرد. مثال زیر همان کد کامپایل شده ی مثال قبل را تولید می کند:

    کد:
    var customerQuery2 = ‎
    ‎    from cust in customers
    ‎    where cust.City == "London" ‎
    ‎    select cust;‎
     
    foreach(var customer in customerQuery2)‎
    ‎{‎
    ‎    Console.WriteLine(customer.LastName + ", " + customer.FirstName);‎
    ‎}
     
    کوکی♥❄ و MajiD.JD از این پست تشکر کرده اند.
  4. مدیر بازنشسته☕

    تاریخ عضویت:
    ‏15/8/17
    ارسال ها:
    5,336
    تشکر شده:
    42,669
    امتیاز دستاورد:
    113
    لغت کلیدی var زمانی که نوع متغیر مشخص باشد، مفید می باشد، یا وقتی که مشخص نیست، مهم است انواع جنریک های تو در تو به طور واضح مشخص شده باشند، مانند آنهایی که با گروه query ها تولید می شوند. به طور کل پیشنهاد می کنیم که اگر از var استفاده می کنید، تشخیص دهید که می تواند خواندن کد شما را برای دیگران دشوارتر سازد.
     
    کوکی♥❄ و MajiD.JD از این پست تشکر کرده اند.