In LINQ to SQL, the inner join will return only the records or rows that match in both the tables based on defined conditions.
Following is the syntax of using LINQ to SQL Inner Join to get data from multiple tables.
C# Code
var result = from ed in db.EmployeeDetails
join d in db.Departments on ed.DeptId equals d.DeptId
select new
{
Name = ed.EmpName,
Department = d.DeptName
};
VB.NET Code
Dim result = From ed In db.EmployeeDetails Join d In db.Departments On ed.DeptId Equals d.DeptId
Select New With {.Name = ed.EmpName, .Department = d.DeptName}
If you observe above syntax we joined “EmployeeDetails”, “Departments” tables to get required data by using inner joins.
Before we start implement LINQ to SQL inner join example first we need to create a database with required tables and map those tables to LINQ to SQL file (.dbml) if you don't know the process don't worry check this link create and map database tables to LINQ to SQL file (.dbml).
Once we create and map required tables to .dbml file now we will show data in our application for that Right-click on application → select Add → New Item → Select Web Form → Give name as Default.aspx and click OK button.
Now open Default.aspx page and write the code like as shown below
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Show Employee Details in Gridview</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="gvDetails" runat="server"></asp:GridView>
</div>
</form>
</body>
</html>
Now open code behind file and write the code like as shown below
C# Code
protected void Page_Load(object sender, EventArgs e)
{
EmployeeDBDataContext db = new EmployeeDBDataContext();
if (!Page.IsPostBack)
{
var result = from ed in db.EmployeeDetails
join d in db.Departments on ed.DeptId equals d.DeptId
where d.DeptName.Equals("software")
select new
{
Name = ed.EmpName,
Location = ed.Location,
Gender = ed.Gender,
Department = d.DeptName
};
gvDetails.DataSource = result;
gvDetails.DataBind();
}
}
VB.NET Code
Public Class WebForm1
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim db As New EmployeeDBDataContext()
If Not Page.IsPostBack Then
Dim result = From ed In db.EmployeeDetails Join d In db.Departments On ed.DeptId Equals d.DeptId Where d.DeptName.Equals("software")
Select New With {.Name = ed.EmpName, .Location = ed.Location, .Gender = ed.Gender, .Department = d.DeptName}
gvDetails.DataSource = result
gvDetails.DataBind()
End If
End Sub
End Class
If you observe above example, we are trying to get data from “EmployeeDetails” and “Departments” table using inner join.
Following is the result of LINQ to SQL inner join example.
This is how we can use LINQ to SQL inner join with multiple tables in c#, vb.net to get required data from multiple tables based on our requirements