无涯教程-LINQ - SQL组联接

46 阅读2分钟

在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”表中获取数据。

LINQ To SQL Group Join

参考链接

www.learnfk.com/linq/linq-t…