在LINQ to SQL中,带有into‘expression’的联接子句称为Group联接。在LINQ to SQL中,Group联接根据两个集合中的匹配元素生成对象元素序列。
LINQ to SQL组联接的语法
使用LINQ to SQL组联接从多个表获取数据的语法。
var result = from ed in db.EmployeeDetails join d in db. Departments on ed.DeptId equals d.DeptId into edept from dpem in edept select new { Name = ed.EmpName, Department = dpem.DeptName };
从上面的语法中,我们加入了“EmployeeDetails”,“Departments”表,通过group join得到需要的数据。
LINQ to SQL组联接示例
在开始实现LINQ to SQL组联接示例之前,首先需要创建一个包含所需表的数据库,并将这些表映射到LINQ to SQL文件(.dbml)。
若要了解映射过程,请单击链接LINQ to SQL。
一旦创建了所需的表并将其映射到.dbml文件。现在,希望显示应用程序中的数据。为此,无涯教程右键单击application->Select Add->New Item-> Select web Form->将名称指定为Default.aspx,然后单击OK按钮。
现在打开Default.aspx页面并编写代码,如下所示:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %><!DOCTYPE html>
<html xmlns="www.w3.org/1999/xhtml"> <head runat="server">
</head> <body> <form id="form1" runat="server"> <div> <asp:GridView ID="gvDetails" runat="server"></asp:GridView> </div> </form> </body> </html>
现在打开文件后面的代码并编写代码,如下所示:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
</span><span class="pun">{</span><span class="pln">
</span><span class="typ">EmployeeDBDataContext</span><span class="pln"> db </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">EmployeeDBDataContext</span><span class="pun">();</span><span class="pln">
</span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="typ">Page</span><span class="pun">.</span><span class="typ">IsPostBack</span><span class="pun">)</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
</span><span class="kwd">var</span><span class="pln"> result </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> ed </span><span class="kwd">in</span><span class="pln"> db</span><span class="pun">.</span><span class="typ">EmployeeDetails</span><span class="pln">
</span><span class="kwd">join</span><span class="pln"> d </span><span class="kwd">in</span><span class="pln"> db</span><span class="pun">.</span><span class="typ">Departments</span><span class="pln"> on ed</span><span class="pun">.</span><span class="typ">DeptId</span><span class="pln"> equals d</span><span class="pun">.</span><span class="typ">DeptId</span><span class="pln"> </span><span class="kwd">into</span><span class="pln"> edept
</span><span class="kwd">from</span><span class="pln"> dpem </span><span class="kwd">in</span><span class="pln"> edept
</span><span class="kwd">select</span><span class="pln"> </span><span class="kwd">new</span><span class="pln">
</span><span class="pun">{</span><span class="pln">
</span><span class="typ">Name</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> ed</span><span class="pun">.</span><span class="typ">EmpName</span><span class="pun">,</span><span class="pln">
</span><span class="typ">Location</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> ed</span><span class="pun">.</span><span class="typ">Location</span><span class="pun">,</span><span class="pln">
</span><span class="typ">Gender</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> ed</span><span class="pun">.</span><span class="typ">Gender</span><span class="pun">,</span><span class="pln">
</span><span class="typ">Department</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> dpem</span><span class="pun">.</span><span class="typ">DeptName</span><span class="pln">
</span><span class="pun">};</span><span class="pln">
gvDetails</span><span class="pun">.</span><span class="typ">DataSource</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> result</span><span class="pun">;</span><span class="pln">
gvDetails</span><span class="pun">.</span><span class="typ">DataBind</span><span class="pun">();</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
}
从上面的例子中,我们尝试使用 Group Join 从“EmployeeDetails”和“Departments”表中获取数据。