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)
التماس دعا...
چند وقتی بود دنبال این مطلب می گشتم و نحوه استفاده از آن در همین مورد توی این ساین مطالبی را دوستان عزیز نوشتند و بنده نیز وقتی در همین مورد سوالی را پرسیدم عزیزانی زحمت کشیدند پاسخ دادند.
یه سری مقاله خوب پیدا کردم که سعی می کنم در جهت بالا بردن اطلاعات خود و عزیزان برنامه نویس توی این سایت قرار بدم امیدوارم مفید واقع بشه.
همانطور که می دانید 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)
التماس دعا...