PDA

View Full Version : مشکل در چند قطعه کد



phpphp7
دوشنبه 31 فروردین 1394, 22:58 عصر
سلام دوستان خسته نباشید
2 تا سوال داشتم

1-
http://up.vbiran.ir/uploads/39020142955713543598_8797112.png
1-1این کلمه .Tolist برای چی هست و چه کاربردی داره ؟؟؟
1-2 قطعه کد بالا چه کاری انجام میده؟



2-
http://up.vbiran.ir/uploads/675314295571352874_8797111.png

1-1 این کلمه .First برای چی هست و چه کاربردی داره ؟!؟
1-2 اون کلمه C برای چی هست و از کجا اومده ؟ چطوری ID به C اختصاص یافته ؟


اصلا کلا کلمات کلیدی مثل .First ، .ToList ، FirstOrDiffault چی هستند ؟

Amir4317
دوشنبه 31 فروردین 1394, 23:24 عصر
1-
http://up.vbiran.ir/uploads/39020142955713543598_8797112.png
1-1این کلمه .Tolist برای چی هست و چه کاربردی داره ؟؟؟
1-2 قطعه کد بالا چه کاری انجام میده؟
__________________________________________________ ________




2-
http://up.vbiran.ir/uploads/675314295571352874_8797111.png

1-1 این کلمه .First برای چی هست و چه کاربردی داره ؟!؟
1-2 اون کلمه C برای چی هست و از کجا اومده ؟ چطوری ID به C اختصاص یافته ؟


اصلا کلا کلمات کلیدی مثل .First ، .ToList ، FirstOrDiffault چی هستند ؟

کلاس ToList یک لیست از جنس ردیف های جدول Customers برمی‌گردونه که قابل نمایش در DGView هست.
First هم که خب اسمش روشه! اولین رکوردی رو که شرط داخل پرانتز داره برمیگردونه.
اما شرط داخل پرانتز بصورت لامبدا هست:
(x=> x.ID == CurrentId) یعنی چی؟؟
x=> موردهایی که...(مقدمه)
x.ID == CurrentId که مقدار ID شون با CurrentId برابره (شرط و لازمه)
حالا اون مورد رو به هر نامی می تونید تخصیص بدید میل خودتونه، x نمونه ایه از جدول Customers که همه خصوصیات یک ردیف از اون رو داره.

این دستورات همگی در حوزه‌ی Linq (لینک) هستند و پیشنهاد میکنم برای پیشرفت سریع در پروژه هرچه زودتر آنها رو فرابگیرید. :چشمک:

ali_md110
سه شنبه 01 اردیبهشت 1394, 00:10 صبح
عبارات لامبدا دستورارتی هستند که در پس زمینه تبدیل به دستوراتی مثل Tsql میشوند
اگر یک جدول بانک اسکیول سرور در نظر بگیریم مثل tbl_Customer که دارای 3 فیلد مثل :
ID
FirstName
LastName
باشه
دستورات Sql برای نشان دادن اطلاعات درون یک دیتاگراید باید بنویسیم


Select ID,FirstName,LastName From tbl_Customer


عبارات لامبدا میاد میگه مشایه این جدول tbl_Customer را در زبانی مثل C#‎‎ بوسیله یک کلاس پیاده کنیم و دستورات لامبدا را روی این کلاس پیاده کنیم

خب کلاس ما بدین صورت خواهدشد



public partial class Customer
{
public int ID { get; set; }
public virtual string FisrtName { get; set; }
public virtual string LastName { get; set; }
}


سینتکس دستورات لامبدا بجای دستورات اسکیول بدین صورت هست:



var customer=datacontext.Customer.First(x=> x.ID==1)


x=> عملگر لامبدا هست بدین معنی که بیاد از عبارت سمت چپ منظورم عملگر پرس و جوی First استفاده کن

و معادل این دستور اسکیول را پیاده سازی کن

x.ID معادل دستور Where اسگیول هست



SELECT TOP (1
(
ID,FirstName,LastName from tbl_customer
WHERE ID = 1

عبارات لامبدا عملگرهای جستجوی زیادی داره و با توجه به نوع پرس و جو ار انها استفاه میشه

phpphp7
سه شنبه 01 اردیبهشت 1394, 00:29 صبح
کلاس ToList یک لیست از جنس ردیف های جدول Customers برمی‌گردونه که قابل نمایش در DGView هست.
First هم که خب اسمش روشه! اولین رکوردی رو که شرط داخل پرانتز داره برمیگردونه.
اما شرط داخل پرانتز بصورت لامبدا هست:
(x=> x.ID == CurrentId) یعنی چی؟؟
x=> موردهایی که...(مقدمه)
x.ID == CurrentId که مقدار ID شون با CurrentId برابره (شرط و لازمه)
حالا اون مورد رو به هر نامی می تونید تخصیص بدید میل خودتونه، x نمونه ایه از جدول Customers که همه خصوصیات یک ردیف از اون رو داره.

این دستورات همگی در حوزه‌ی Linq (لینک) هستند و پیشنهاد میکنم برای پیشرفت سریع در پروژه هرچه زودتر آنها رو فرابگیرید. :چشمک:

سلام خیلی ممنون
این دستورات مگه Entity Framework نیستند ؟
از کجا میتونم این linq ها رو یاد بگیرم ؟ مثلا .First و ToList و FirstOrDefault و ...
من First رو متوجه نشدم

phpphp7
سه شنبه 01 اردیبهشت 1394, 00:30 صبح
عبارات لامبدا دستورارتی هستند که در پس زمینه تبدیل به دستوراتی مثل Tsql میشوند
اگر یک جدول بانک اسکیول سرور در نظر بگیریم مثل tbl_Customer که دارای 3 فیلد مثل :
ID
FirstName
LastName
باشه
دستورات Sql برای نشان دادن اطلاعات درون یک دیتاگراید باید بنویسیم


Select ID,FirstName,LastName From tbl_Customer


عبارات لامبدا میاد میگه مشایه این جدول tbl_Customer را در زبانی مثل C#‎‎‎ بوسیله یک کلاس پیاده کنیم و دستورات لامبدا را روی این کلاس پیاده کنیم

خب کلاس ما بدین صورت خواهدشد



public partial class Customer
{
public int ID { get; set; }
public virtual string FisrtName { get; set; }
public virtual string LastName { get; set; }
}


سینتکس دستورات لامبدا بجای دستورات اسکیول بدین صورت هست:



var customer=datacontext.Customer.First(x=> x.ID==1)


x=> عملگر لامبدا هست بدین معنی که بیاد از عبارت سمت چپ منظورم عملگر پرس و جوی First استفاده کن

و معادل این دستور اسکیول را پیاده سازی کن

x.ID معادل دستور Where اسگیول هست



SELECT TOP (1
(
ID,FirstName,LastName from tbl_customer
WHERE ID = 1

عبارات لامبدا عملگرهای جستجوی زیادی داره و با توجه به نوع پرس و جو ار انها استفاه میشه





سلام دوست عزیز
ممنون بابت وقتی که گذاشتید و توضیحات کاملی دادید
من فقط این .First رو متوجه نشدم
آیا منبع خاصی برای یادگیری این عبارت ها هست ؟

ali_md110
سه شنبه 01 اردیبهشت 1394, 01:52 صبح
بله این دستورات linq to Entity هستند که بر روی کلاسها یا موجودیتهای ORM مثل Entity Framework قابل اجرا هستند

وقتی از ef استفاده میکنیم کلاسهای ما به دیتاکنتکس معرفی میشن وقتی دستور First اجرا میشه درواقع ( Select Top(1 اسکیول را داره در پس زمینه اجرا میکنه
جالا اگر چلوی First پرانتز باز کنیم و عملگر <=x استفاده کنیم در واقع یک شرط به دستور fisrt اضافه میکنیم که میشه where در اسکیول
عملگر FirstOrDefault ه شبیه Fisrt هست ولی اگر رکورردی در دستور First پیدا نشد برنامه استثنا پرتاب میکند ولی در FisrtOrDefault نه