کلمه LINQ مخفف عبارت Language-Integrated Query و مجموعه ای از ویژگی های معرفی شده در ویژوال استادیو ۲۰۰۸ می باشد که قابلیت های فوق العاده LINQ Query را در زبان های C# و Visual Basic گسترش می دهد، با استفاده از LINQ می توانید اطلاعات را مانند SQL queries ها معمولی دستکاری کنید.
LINQ Query
پروژه را به صورت زیر ایجاد کنید :
“Start” – “All Programs” – “Microsoft Visual Studio 2010”
“File” – “New Project” – “C#” – “Empty Project”
برای پروژه اسمی ماننده ConvertLinqResultToDataTableو یا هر اسم دلخواه انتخاب کنید و محل آن را مشخص کنید.
روی Solution Explorer کلیک راست کنید سپس Add New Item را انتخاب کنید و بعد صفحه Default.aspx را انتخاب کنید.
یک دکمه و Grid view برای bind کردن رکورد ها بعد از ایجاد data table، Drag و drop کنید.
حالا سورس کد ر به صورت زیر خواهد بود:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="ConvertLinqResultToDataTable.Default" %> <!DOCTYPE html> <htmlxmlns="http://www.w3.org/1999/xhtml"> <headrunat="server"> <title></title> </head> <bodystyle="background-color: Blue"> <h4style="color: White">Article by VithalWadje</h4> <formid="form1"runat="server"> <tablestyle="margin-top: 60px; color: White"> <tr> <td></td> <td> <asp:ButtonID="btngetresult"runat="server"Text="Get Result" /> </td> </tr> <tr> <td> <asp:GridViewID="GridView1"runat="server"></asp:GridView> </td> </tr> </table> </form> </body> </html>
حالا کلاس فایل Default.aspx.cs را باز کنید و یک کلاس با نام Customerو با ویژگی asایجاد کنید.
publicclassCustomer { privatestring _Name, _City, _Address; publicstring Name { get { return _Name; } set { _Name = value; } } publicstring City { get { return _City; } set { _City = value; } } publicstring Address { get { return _Address; } set { _Address = value; } } }
اکنون یک صف از type customer ایجاد کنید و مقادیر را به هر ویژگی as اختصاص دهید.
Customer[] cust = new Customer[] { new Customer{Name="VithalWadje",City="Mumbai",Address="Boriwali"}, new Customer{Name="SudhirWadje",City="Latur",Address="Kabansangvi"}, };
حالا رکورد های بیرون کردن (fire)LINQ query را داریم، می توانید رکورد ها را از پایگاه داده ها (دیتابیس) بگیرید اما برای درک بهتر از آنها استفاده نکرده ایم.
اکنون یک عملکرد برای نام گزاری LINQResultToDataTable ایجاد کنید که LINQ Result را به DataTable as تبدیل کند.
public DataTable LINQResultToDataTable<T>(IEnumerable<T>Linqlist) { DataTable dt = newDataTable(); PropertyInfo[] columns = null; if (Linqlist == null) returndt; foreach (T Record inLinqlist) { if (columns == null) { columns = ((Type)Record.GetType()).GetProperties(); foreach (PropertyInfoGetPropertyin columns) { Type colType = GetProperty.PropertyType; if ((colType.IsGenericType) && (colType.GetGenericTypeDefinition() == typeof(Nullable<>))) { colType = colType.GetGenericArguments()[0]; } dt.Columns.Add(newDataColumn(GetProperty.Name, colType)); } } DataRowdr = dt.NewRow(); foreach (PropertyInfopinfoin columns) { dr[pinfo.Name] = pinfo.GetValue(Record, null) == null ? DBNull.Value :pinfo.GetValue (Record, null); } dt.Rows.Add(dr); } returndt; }
عملکرد بالا،LINQ query result را می گیرد و آن را به Data Table تبدیل می کند.
اکنون روی دکمه Get Result دوبار کلیک (دابل کلیک) کنید و کد زیر را Click event بنویسید.
protectedvoidbtngetResult_Click(object sender, EventArgs e) { //linq Query var query = from Customer s incust select s; //stored result into datatable DataTable dt = LINQResultToDataTable(query); //bind gridview GridView1.DataSource = dt; GridView1.DataBind(); }
بعد از ایجاد عملکرد تبدیل LINQ query result به Data Table، سپس کل کد Default.aspx.cs به صورت زیر خواهد بود.
usingSystem; usingSystem.Collections.Generic; usingSystem.Data; usingSystem.Linq; usingSystem.Reflection; usingSystem.Web; usingSystem.Web.UI; usingSystem.Web.UI.WebControls; namespaceConvertLinqResultToDataTable { publicpartialclassDefault : System.Web.UI.Page { protectedvoidPage_Load(object sender, EventArgs e) { } Customer[] cust = new Customer[] { new Customer{Name="VithalWadje",City="Mumbai",Address="Boriwali"}, new Customer{Name="SudhirWadje",City="Latur",Address="Kabansangvi"}, }; protectedvoidbtngetResult_Click(object sender, EventArgs e) { //linq Query var query = from Customer s incust select s; //stored result into datatable DataTable dt = LINQResultToDataTable(query); //bind gridview GridView1.DataSource = dt; GridView1.DataBind(); } public DataTable LINQResultToDataTable<T>(IEnumerable<T>Linqlist) { DataTable dt = newDataTable(); PropertyInfo[] columns = null; if (Linqlist == null) returndt; foreach (T Record inLinqlist) { if (columns == null) { columns = ((Type)Record.GetType()).GetProperties(); foreach (PropertyInfoGetPropertyin columns) { Type colType = GetProperty.PropertyType; if ((colType.IsGenericType) && (colType.GetGenericTypeDefinition() == typeof(Nullable<>))) { colType = colType.GetGenericArguments()[0]; } dt.Columns.Add(newDataColumn(GetProperty.Name, colType)); } } DataRowdr = dt.NewRow(); foreach (PropertyInfopinfoin columns) { dr[pinfo.Name] = pinfo.GetValue(Record, null) == null ? DBNull.Value :pinfo.GetValue (Record, null); } dt.Rows.Add(dr); } returndt; } } publicclassCustomer { privatestring _Name, _City, _Address; publicstring Name { get { return _Name; } set { _Name = value; } } publicstring City { get { return _City; } set { _City = value; } } publicstring Address { get { return _Address; } set { _Address = value; } } } }
حالا همه ی logic (استدلال) ها را برای تبدیل LINQ query result به Data Table نوشته ایم، اکنون پروژه را اجرا کنید که صفحه اولیه به صورت زیر خواهد بود:
روی دکمه Get Result بالا کلیک کنید، سپس LINQ Result به Data Table تبدیل خواهد شد و به صورت زیر درGrid view نمایش داده می شود.
هیچ دیدگاهی نوشته نشده است.