# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > دسترسی به داده ها (ADO.Net و LINQ و ...) > سوال: تغییر کدهای لینک به انتی تو لامبداentity  lambda

## علی فتحی

سلام دوستان خیلی تعریف دستورات انتی تی با لامبدا رو شنیدم ولی چیزی از اون نمیدونم . میگن سرعت برنامه رو چند برابر میکنه .لطفا تفاوت کدها و یا اموزش بگذارید اگر ممکنه

----------


## parvizwpf

شما اصلا با خود مفهوم ها آشنایی دارید که الان میخواهید دستوراتشون رو یاد بگیرید؟ کافیه مفاهیم رو حتی به فارسی سرچ کنید تا اطلاعات خوبی بگیرید.

----------


## ali_md110

بله دوست من
عبارات لامبدا بسیار انعطاف پذیر هستند همچنین سرعت کدنویسی شما رو بالا میبره
در Entity FrameWork از Linq To Entity و navigationProperties هاو سایر امکانات آن استفاده کنید و تفاوت را احساس کنید
البته دستورات لامبدا در نهایت به Tsql تبدیل میشوند تا قابل فهم باشه برای اسکیول سرور
برای اشنایی بیشتر سری بزنید به سایتش:
http://msdn.microsoft.com/en-us/data...907#getstarted

----------


## rahmatipoor

با عرض سلام

آیا Linq To Entity با لامبدا متفاوت هست و یا اینکه یکی هستند

اگه کسی از دوستان این موضوع رو توضیح بده ممنون میشم.

----------


## مهدی کرامتی

> آیا Linq To Entity با لامبدا متفاوت هست و یا اینکه یکی هستند


Linq to Entities یک مکانیسم دسترسی به داده ها است، و عبارت های Lambda جزو قابلیت های زبان سی شارپ است که نوشتن کوئری ها را برای شما تسهیل می کند.




> خیلی تعریف دستورات انتی تی با لامبدا رو شنیدم


دستورات EF با عبارت های Lambda یکی نیست. دستوراتی که EF پشتیبانی می کنند عبارتند از SaveChanges و امثالهم. این گونه دستورات می توانند داده ها را در دیتابیس بنویسند و یا در آن تغییر ایجاد کنند. اما دستورات Lambda که در Linq استفاده می شوند صرفا برای خواندن داده ها هستند.




> میگن سرعت برنامه رو چند برابر میکنه.


لزوما سرعت اجرای برنامه رو بالا نمی بره، بلکه به قول دوست مان *ali_md110* ، سرعت کدنویسی شما رو بالاتر می بره، چون کد کمتری باید برای خواندن داده ها و کوئری گرفتن بنویسید.

----------


## pe32_64

> با عرض سلام
> 
> آیا  با لامبدا متفاوت هست و یا اینکه یکی هستند
> 
> اگه کسی از دوستان این موضوع رو توضیح بده ممنون میشم.


سلام
lambda و Linq To Entity متفاوت اند .
در برخی جاها شما یک پارامتری به نام delegate داری که از جنس تابع (method) هستش ، یعنی  کد هستش. برا استفاده از اینها لازم نیست هر بار در کلاس یک متد تعریف کنی و در جای مورد نظر صداش  بزنی.
 میتونی فقط اونجا بدنه (کد اجرایی) تابع رو بنویسی، که بهش میگن lambda .
یعنی lambda یک ویژگی در syntax زبان #c هستش که برا استفاده راحت تر از *توابع بدون نام (Anonymous method)*.

lambda در Linq To Entity استفاده میشه.


//********************//
کد عادی زیر


private ComboBox combo;
private Label label;
public CreateControls()
{
    combo = new ComboBox();
    label = new Label();
    //some initializing code
    combo.SelectedIndexChanged += new EventHandler(combo_SelectedIndexChanged);
}
void combo_SelectedIndexChanged(object sender, EventArgs e)
{
    label.Text = combo.SelectedValue;
}

که بعد از استفاده از lambda به این صورت در میاد:

public CreateControls()
{
    ComboBox combo = new ComboBox();
    Label label = new Label();
    //some initializing code
    combo.SelectedIndexChanged += (s, e) => {label.Text = combo.SelectedValue;};
}

----------


## rahmatipoor

ممنون از دوستان عزیز تا حدودی متوجه شدم

----------

