📜  在 linq c#inner join 中连接两个表 - C# (1)

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

在 LINQ C# 中使用 Inner Join 连接两个表

在许多情况下,我们需要以某种方式将两个表连接起来。在关系型数据库中,这通常涉及到使用 Inner Join 操作来根据指定的条件组合两个表中的数据。在 C# 中,我们可以使用 LINQ(Language-Integrated Query)来执行这种连接操作。

Inner Join

Inner Join 是 SQL 中连接两个表最常用的类型之一,它的作用是根据某个条件将两个表中的数据进行匹配,然后返回包含匹配行的新数据表。在 C# 中,我们可以使用 Join 方法来执行 Inner Join 操作,其代码格式如下:

var result = from table1 in dataContext.Table1
             join table2 in dataContext.Table2
             on table1.key equals table2.key
             select new
             {
                 /* Select some fields */
             };

以上代码表示将 dataContext 里的 Table1 和 Table2 进行 Inner Join,连接条件为 table1.key = table2.key,并返回一个新数据表,其中包含需要选择的字段值。

示例

让我们来看一个简单的示例,其中有两个数据表:Order 和 Customer。Customer 数据表包含所有客户的信息,而 Order 数据表则包含与客户相关的订单信息。假设我们想要按照客户姓名获取顾客拥有的订单列表。以下是如何使用 Inner Join 实现此操作的代码:

using System;
using System.Linq;

class Program
{
    static void Main()
    {
        using (var dataContext = new MyDataContext())
        {
            var orders = from order in dataContext.Orders
                         join customer in dataContext.Customers
                         on order.CustomerId equals customer.Id
                         where customer.Name == "John Smith"
                         select order;

            foreach (var order in orders)
            {
                Console.WriteLine("Order: {0}", order.Id);
            }
        }
    }
}

以上代码将 dataContext 中的 Orders 和 Customers 数据表进行 Inner Join,连接条件为 order.CustomerId = customer.Id。然后,我们根据特定的客户姓名筛选出匹配的行,最后打印出该客户订单的 Id。

总结

使用 Inner Join 连接两个表是一种非常常见的操作,可以使我们以简单的方式检索和处理多个表中的数据。在 C# 中,我们可以使用 LINQ 来实现连接操作,其语法非常类似于 SQL 中的语法。通过本文,您应该已经掌握了如何在 C# 中使用 Inner Join 连接两个数据表的方法。祝您好运!