📜  LINQ to SQL内部联接(1)

📅  最后修改于: 2023-12-03 15:02:41.441000             🧑  作者: Mango

LINQ to SQL内部联接

当我们需要从多个表中检索数据时,内部联接(Inner Join)是一种非常常见的方法。在LINQ to SQL中,我们可以使用多种方式执行内部联接操作。在这篇文章中,我们将探讨如何使用LINQ to SQL执行内部联接。

方法1:使用join关键字

最常见的方法是使用join关键字。使用join关键字,我们可以将两个表中的数据连接在一起,并在结果集中选择所需的列。下面是一个示例:

using (var context = new NorthwindDataContext())
{
    var query = from c in context.Customers
                join o in context.Orders on c.CustomerID equals o.CustomerID
                select new {c.ContactName, o.OrderDate};

    foreach(var result in query)
    {
        Console.WriteLine(result.ContactName + " - " + result.OrderDate);
    }
}

在这个示例中,我们使用了join关键字将Customers表和Orders表连接在一起。我们使用equals关键字指定了连接条件,这是两个表中的共同列CustomerID。最后,我们使用select关键字选择所需的结果。

方法2:使用LINQ to SQL方法

除了join关键字,我们还可以使用LINQ to SQL方法来执行内部联接操作。这些方法通常由上下文对象提供。以下是一个示例:

using (var context = new NorthwindDataContext())
{
    var query = context.Customers
                .Join(context.Orders,
                      c => c.CustomerID,
                      o => o.CustomerID,
                      (c, o) => new {c.ContactName, o.OrderDate});

    foreach(var result in query)
    {
        Console.WriteLine(result.ContactName + " - " + result.OrderDate);
    }
}

在这个示例中,我们使用上下文对象的Join方法来将Customers表和Orders表连接在一起。我们使用lambda表达式指定了连接条件,并使用.Select()方法选择所需的列。

方法3:使用关联属性

最后,我们可以使用LINQ to SQL关联属性来执行内部联接。关联属性是一种通过表之间的外键关系建立链接的方法。以下是一个示例:

using (var context = new NorthwindDataContext())
{
    var query = from o in context.Orders
                select new {o.Customer.ContactName, o.OrderDate};

    foreach(var result in query)
    {
        Console.WriteLine(result.ContactName + " - " + result.OrderDate);
    }
}

在这个示例中,我们使用Customer关联属性连接了Orders表和Customers表。我们选择了ContactNameOrderDate列来创建结果集。

总之,使用LINQ to SQL内部联接可以使我们从多个表中检索数据。我们可以使用join关键字,LINQ to SQL方法或关联属性来执行内部联接。