Introduction
Today, in this article let's play around
with one of the interesting and most useful concept in
LINQ.
Question:
What is inner join using LINQ for multiple tables?
In simple terms "It provides flexibility
to pull out the matching result sets from 3 or more
tables with help of inner join using LINQ"
Step 1:
Create a new webform project
![new-project-window.jpg]()
Step 2:
Design of Employee table looks like this
![employee-table.jpg]()
![employee-ID-table.jpg]()
Step 3:
Design of Position table looks like this
![position-table.jpg]()
![position-ID-table.jpg]()
Step 4:
Design of Salary table looks like this
![salary-table.jpg]()
![salary-id-table.jpg]()
Step 5:
The complete code of WebForm1.aspx looks like this
<%@
Page
Language="C#"
AutoEventWireup="true"
CodeBehind="Default.aspx.cs"
Inherits="LINQInnerJoinApp._Default"
%>
<!DOCTYPE
html
PUBLIC
"-//W3C//DTD XHTML 1.0
Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml">
<head
id="Head1"
runat="server">
<title></title>
</head>
<body>
<form
id="form1"
runat="server">
<center>
<div>
<table>
<tr>
<td
colspan="2">
<asp:Label
ID="Label1"
runat="server"
Text="INNER
JOIN using LINQ for Multiple Tables (3 Tables)"
Font-Bold="true"
Font-Size="Large"
Font-Names="Verdana"
ForeColor="Maroon"></asp:Label>
</td>
</tr>
<tr>
<td
colspan="2"
align="center">
<asp:Button
ID="Button1"
runat="server"
Text="Select
Data" Font-Names="Verdana"
Width="213px"
BackColor="Orange"
Font-Bold="True"
OnClick="Button1_Click"
/>
</td>
</tr>
<tr>
<td
colspan="2"
align="center">
<br
/>
<asp:GridView
ID="GridView1"
runat="server"
BackColor="LightGoldenrodYellow"
BorderColor="Tan"
BorderWidth="1px"
CellPadding="2"
EnableModelValidation="True"
ForeColor="Black"
GridLines="None"
AutoGenerateColumns="False">
<AlternatingRowStyle
BackColor="PaleGoldenrod"></AlternatingRowStyle>
<FooterStyle
BackColor="Tan"></FooterStyle>
<HeaderStyle
BackColor="Tan"
Font-Bold="True"></HeaderStyle>
<PagerStyle
HorizontalAlign="Center"
BackColor="PaleGoldenrod"
ForeColor="DarkSlateBlue">
</PagerStyle>
<SelectedRowStyle
BackColor="DarkSlateBlue"
ForeColor="GhostWhite"></SelectedRowStyle>
<Columns>
<asp:BoundField
DataField="FirstName"
HeaderText="First
Name" ReadOnly="true"
/>
<asp:BoundField
DataField="LastName"
HeaderText="Last
Name"
/>
<asp:BoundField
DataField="Position1"
HeaderText="Position"
/>
<asp:BoundField
DataField="Salary1"
HeaderText="Salary"
/>
</Columns>
</asp:GridView>
</td>
</tr>
</table>
</div>
</center>
</form>
</body>
</html>
Step 6:
The complete code of WebForm1.aspx.cs looks like this
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Web;
using
System.Web.UI;
using
System.Web.UI.WebControls;
namespace
LINQInnerJoinApp
{
public
partial
class
_Default :
System.Web.UI.Page
{
protected
void Page_Load(object
sender, EventArgs e)
{
}
protected
void Button1_Click(object
sender, EventArgs e)
{
var query =
from r
in
objEntities.Employeejoin p in
objEntities.Position on r.EmpId equals p.EmpIdjoin q
in objEntities.Salary on
p.PosId equals q.PosIdselect
new{r.FirstName,r.LastName,p.Position1,q.Salary1};
GridView1.DataSource = query;
GridView1.DataBind();
}
#region
Instance MembersCompanyEntities objEntities =
new CompanyEntities();
#endregion
}
}
Step 7:
The output of the application looks like this
![select-data.jpg]()
Step 8:
The results retrieved output of the application looks
like this
![select-data-in-linq.jpg]()
I hope this article is useful for you
...I look forward for your comments and
feedback....Thanks Vijay Prativadi