PDA

View Full Version : Sum در LINQ



Boo Ali
یک شنبه 22 آذر 1388, 11:18 صبح
باسلام
من كد زير براي محاسبه 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.

با تشكر

hdv212
یک شنبه 22 آذر 1388, 14:19 عصر
بدین صورت اصلاح کنید :


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

موفق باشید.

Boo Ali
دوشنبه 23 آذر 1388, 10:58 صبح
باتشكر از پاسخ شما،متاسفانه از ex خطا مي گيرد و نميدانم كجا و چطور بايد تعريف كنم.

hdv212
دوشنبه 23 آذر 1388, 15:09 عصر
باتشكر از پاسخ شما،متاسفانه از ex خطا مي گيرد و نميدانم كجا و چطور بايد تعريف كنم.

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

raziee
سه شنبه 24 آذر 1388, 09:24 صبح
باتشكر از پاسخ شما،متاسفانه از ex خطا مي گيرد و نميدانم كجا و چطور بايد تعريف كنم.

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

دلیل خطا همونطور که دوستمون گفتند به خاطر اینه که ایشون اون رو با C#‎ نوشتند.
به پست زیر بروید و نحوه ی استفاده صحیح از اپراتور ها رو مطالعه کنید.
http://barnamenevis.org/forum/showpost.php?p=864519&postcount=18
شاد باشید

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

davoodrm666_666
سه شنبه 24 آذر 1388, 11:43 صبح
باتشكر
لطفاً در موارد زير راهنمايي نماييد:
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

raziee
سه شنبه 24 آذر 1388, 13:09 عصر
3- در لينك توصيه شده اصلاً نمي فهم Dim movies=GetMovies از كجا آمده است و چگونه تعريف گرديه است.
فایل ها رو اگر دانلود کنید متوجه میشید.