PDA

View Full Version : مقاله: LINQ چیست؟



hamidreza20
دوشنبه 02 فروردین 1389, 18:05 عصر
سلام دوستان عزیز
چند وقتی بود دنبال این مطلب می گشتم و نحوه استفاده از آن در همین مورد توی این ساین مطالبی را دوستان عزیز نوشتند و بنده نیز وقتی در همین مورد سوالی را پرسیدم عزیزانی زحمت کشیدند پاسخ دادند.

یه سری مقاله خوب پیدا کردم که سعی می کنم در جهت بالا بردن اطلاعات خود و عزیزان برنامه نویس توی این سایت قرار بدم امیدوارم مفید واقع بشه.


همانطور که می دانید SQL زبان ساخت یافته Query یا تقاضا از بانک اطلاعاتی می باشد ، در همین راستا شرکت مایکروسافت در ورژن 3 به بعد دات نت کتابخانه ای به نام LINQ به فضا نام های خود افزوده است

LINQ (لینک) مختصر کلمه Language INtegrated Query بوده و یک زبان برای تقاضا از هر گونه مجموعه داده (بانک اطلاعاتی ، آرایه ها ، Xml و...) می باشد . این زبان بسیار شبیه زبان SQL بوده و با زبان های C#‎‎‎ و Vb.NET قابل پیاده سازی است .

هدف اصلی خلق LINQ ارائه یک زبان یکتا جهت تقاضا ، برنامه ریزی و فیلتر کردن اطلاعات ذخیره شده در اشیاء مختلف اعم از پایگاه داده ، اشیا ، آرایه ها و از همه مهتر XML است ، این زبان قابلیت Debug شدن به صورت Runtime را دارست و بسیار قابل انعطاف است .

LINQ بسیار مورد پسند توسعه دهندگان وب به وِیژه دوست داران XML قرار گرفت ، شما به وسیله این زبان قادرید به همان سادگی که از پایگاه داده تقاضا می کنید از یک ساختار XML یا یک Object نیز تقاضا نمایید .

بنده آموزش LINQ را در سه مقاله ارائه خواهم کرد :

لینک به اشیاء (LINQ to Objects)
لینک به ایکس ام ال (LINQ to XML)
لینک به اس کیو ال (LINQ to SQL)


قسمت اول لینک به XML :

قبل از شروع کار دقت نمایید که Dot Net FrameWork 3.5 بر روی سیستم شما نصب شده باشد

یک پروژه ASP.NET توسط Visual Studio 2008 ایجاد نمایید (دقت کنید لیست بازشو Framework 3.5 را انتخاب کرده باشد) قصد دارم با یک مثال خیلی ساده لینک به اشیاء را توضیح دهم .

فرض کنید یک آرایه داریم ، میخواهیم یک سری اعمال متداول که به توسط بانک اطلاعاتی به سادگی امکان پذیر است بر روی این آرایه انجام دهیم ، این اعمال در صورت نبود LINQ بسیار دشوار خواهد بود .

یک آرایه به صورت زیر ایجاد نمایید :


int[] myArray = new int[] { 15, 17, 16, 20, 12, 14, 10, 13, 15, 15, 18, 19 };


فرض می کنیم این اعداد نمرات درس پایگاه داده دانشجویان رشته کامپیوتر می باشد .

میخواهیم نمرات بالاتر از 12 را نمایش دهیم :



var result = from n in myArray

where n > 12

select n;


همانطور که ملاحظه می کنید دستورات فوق بسیار شبیه دستورات SQL است البته جای قرار گیری دستورات کمی تغییر کرده است ، با این دستور به سادگی لیست تمام نمرات بالاتر از 12 را واکشی کردیم .

اکنون میتوانیم این داده ها را داخل یک حلقه چاپ کنیم :



foreach (int a in result)
{

Response.Write(a.ToString() + "<br>");
}

یا به یک کنترل داده ای مانند Gridview بایند نماییم :



GridView1.DataSource = result;
GridView1.DataBind();

برای مثال بعد ابتدا یک نگاه به سری مقالات بنده در مورد شی گرایی بیاندازید .

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



using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

public class Human
{

int _Age = 0;

int _Height = 0;

string _Name = "";

public Human(int objAge, int objHeight, string objName)

{

_Age = objAge;

_Height = objHeight;

_Name = objName;

}

public string Name

{

get

{

return _Name;

}

set

{

_Name = value;

}

}

public int Age

{

get

{

return _Age;

}

set

{

_Age = value;

}

}



public int Height

{

get

{

return _Height;

}

set

{

_Height = value;

}

}


}

اکنون یک لیست از چند نمونه از این کلاس میسازیم :



List<Human> humanList = new List<Human>();
humanList.Add(new Human(25, 170, "Ali"));
humanList.Add(new Human(23, 170, "Amir"));
humanList.Add(new Human(15, 160, "Maryam"));
humanList.Add(new Human(18, 165, "Leila"));

می خواهیم توسط دستورات LINQ نام افرادی که سن آنها بیشتر از 19 سال می باشد را درخواست کنیم ، به سادگی داریم :



var result = from h in humanList

where h.Age > 19

select h.Name;

اگر بخواهیم نام و قد افرادی که قد آنها 170 است درخواست کنیم داریم :



List<Human> humanList = new List<Human>();
humanList.Add(new Human(25, 170, "Ali"));
humanList.Add(new Human(23, 170, "Amir"));
humanList.Add(new Human(15, 160, "Maryam"));
humanList.Add(new Human(18, 165, "Leila"));
var result = (from h in humanList

where h.Height == 170

select new { h.Name, h.Height });

اگر بلند ترین قد را بخواهیم :



var result = (from h in humanList

select h.Height).Max();

دقت کنید که در مثال های قبلی به دلیل دریافت چندین مقدار باید از حلقه foreach یک Girdview برای نمایش داده ها استفاده می کردیم ولی در مثال های اخیر چون فقط یک مقدار دریافت می شود از حلقه استفاده نمی کنیم :


Response.Write(result);
اگر بخواهیم اطلاعات کامل فقط 2 نفر از لیست را در Gridview نمایش دهیم :



var result = (from h in humanList

select new { h.Name, h.Height, h.Age }).Take(2);
GridView1.DataSource = result;
GridView1.DataBind();

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


var result = (from h in humanList

select new { h.Name, h.Height, h.Age }).OrderBy(o => o.Age);

و بسیاری دستورات دیگر که در مقالات بعد با آنها آشنا خواهیم شد .

منبع مطلب (http://www.how2learnasp.net/article.aspx?code=38f43032-7e25-4cb0-ba49-5e3eaa05b793)

التماس دعا...

failure
دوشنبه 07 تیر 1395, 03:04 صبح
واقعا دکمه تشکر کافی نبود مرسی از شما