نمایش نتایج 1 تا 8 از 8

نام تاپیک: Sum در LINQ

  1. #1
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    اسفند 1383
    پست
    180

    Sum در LINQ

    باسلام
    من كد زير براي محاسبه Sum در VB.NET با استفاده از LINQ مي نويسم ولي خطا مي دهد:


    Dim r = (From t In db.telephons Select t.int_Child).Sum

    فيلد int_child از نوع integer است.

    db.telephons از نوع DataContext است.

    خطاي كامپايل با عبارت زير مي دهد،در صورتيكه اگر بجاي Sum عبارت Count يا Min يا Max بنويسيم اجرا شده و خطايي نمي دهد:

    Overload resolution failed because no accessible 'Sum' accepts this number of arguments.

    با تشكر

  2. #2
    کاربر دائمی آواتار hdv212
    تاریخ عضویت
    آبان 1384
    محل زندگی
    قم
    پست
    1,727

    نقل قول: Sum در LINQ

    بدین صورت اصلاح کنید :

    Dim r = (From t In db.telephons Select t).Sum(ex => ex.int_Child)


    موفق باشید.

  3. #3
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    اسفند 1383
    پست
    180

    نقل قول: Sum در LINQ

    باتشكر از پاسخ شما،متاسفانه از ex خطا مي گيرد و نميدانم كجا و چطور بايد تعريف كنم.

  4. #4
    کاربر دائمی آواتار hdv212
    تاریخ عضویت
    آبان 1384
    محل زندگی
    قم
    پست
    1,727

    نقل قول: Sum در LINQ

    باتشكر از پاسخ شما،متاسفانه از ex خطا مي گيرد و نميدانم كجا و چطور بايد تعريف كنم.
    دوست عزیز، ex نام آبجکت تعریف شده در عبارت Lambda است، از همون t استفاده کن، در ضمن به دستور نوشتاری اون در vb.net هم توجه کن (من اونو به سی شارپ نوشتم)

  5. #5
    VIP آواتار raziee
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    تهران
    سن
    35
    پست
    2,208

    نقل قول: Sum در LINQ

    باتشكر از پاسخ شما،متاسفانه از ex خطا مي گيرد و نميدانم كجا و چطور بايد تعريف كنم.
    دوست عزیز، ex نام آبجکت تعریف شده در عبارت Lambda است، از همون t استفاده کن، در ضمن به دستور نوشتاری اون در vb.net هم توجه کن (من اونو به سی شارپ نوشتم)
    دلیل خطا همونطور که دوستمون گفتند به خاطر اینه که ایشون اون رو با C#‎‎ نوشتند.
    به پست زیر بروید و نحوه ی استفاده صحیح از اپراتور ها رو مطالعه کنید.
    https://barnamenevis.org/showpo...9&postcount=18
    شاد باشید
    نگو به سرنوشت میبازی - تو بخوای فردا رو میسازی

  6. #6
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    اسفند 1383
    پست
    180

    نقل قول: Sum در LINQ

    باتشكر
    لطفاً در موارد زير راهنمايي نماييد:
    1- چگونه از Lambda استفاده نمايم
    2- از t هم استفاده كردم ولي باز خطا مي دهد و آن را نمي شناسد
    3- در لينك توصيه شده اصلاً نمي فهم Dim movies=GetMovies از كجا آمده است و چگونه تعريف گرديه است.
    4-ايا Lambda بخشي از Linq hsj

  7. #7

    نقل قول: Sum در LINQ

    نقل قول نوشته شده توسط Boo Ali مشاهده تاپیک
    باتشكر
    لطفاً در موارد زير راهنمايي نماييد:
    1- چگونه از Lambda استفاده نمايم
    2- از t هم استفاده كردم ولي باز خطا مي دهد و آن را نمي شناسد
    3- در لينك توصيه شده اصلاً نمي فهم Dim movies=GetMovies از كجا آمده است و چگونه تعريف گرديه است.
    4-ايا Lambda بخشي از Linq hsj
    VB9 از عبارت های Lambda پشتیبانی نمی کنه
    عبارت های Lambda از ویژگی های جدید C#‎3 هست که با استفاده از اون کد نویسی Delegate و Anonymous Type ها راحت می شه. عبارت Lambda به ما اجازه میده تا توابعی که میشه به عنوان آرگومان به متدها فرستاده شوند ایجاد کنیم.

    People.Where(P=>P.id==1)

    که در vb برای بدست آوردن نتیجه مشابه بالا باید کد زیر رو بنویسیم:

    Dim Predecate as New Func(of Person, Boolean) _
    Address of WherePredecate)
    dim q = people.Where(predecate)

    Public Function WherePredecate(p as Person) as Boolean
    return P.id=1
    end function


    البته برای محاسبته Sum در Vb به صورت زیر عمل می کنیم:

    Dim Query = (From q In People.Salary _
    Select q.SalaryYear).Sum

  8. #8
    VIP آواتار raziee
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    تهران
    سن
    35
    پست
    2,208

    نقل قول: Sum در LINQ

    3- در لينك توصيه شده اصلاً نمي فهم Dim movies=GetMovies از كجا آمده است و چگونه تعريف گرديه است.
    فایل ها رو اگر دانلود کنید متوجه میشید.
    نگو به سرنوشت میبازی - تو بخوای فردا رو میسازی

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •