LINQ 中的交叉连接

csharplinqserver side programmingprogramming更新于 2025/11/20 19:39:00

语言集成查询 (LINQ) 是 C# 中用于数据操作的强大工具,可实现高效且富有表现力的数据访问和操作。您可以使用 LINQ 执行的操作之一是交叉连接操作,这在数据库查询中很常见。本文将指导您在 LINQ 中实现交叉连接。

了解交叉连接

交叉连接,也称为笛卡尔积,是一种将第一个表的每一行与第二个表的每一行匹配的连接操作。如果第一个表有 n 行,第二个表有 m 行,则结果是一个有 n*m 行的表。

在 LINQ 中实现交叉连接

要在 LINQ 中实现交叉连接,您可以两次使用 from 子句,然后从每个源中选择所需的字段。

示例

以下是示例 −

using System;
using System.Collections.Generic;
using System.Linq;

class Program {
   static void Main() {
      List<string> colors = new List<string> { "Red", "Green", "Blue" };
      List<string> items = new List<string> { "Pen", "Book", "Glass" };

      var crossJoin = from color in colors
                        from item in items
                        select new { Color = color, Item = item };

      foreach (var element in crossJoin) {
         Console.WriteLine($"{element.Color}, {element.Item}");
      }
   }
}

在此示例中,我们首先定义两个列表:colors 和 items。然后,我们使用两个 from 子句对 colors 和 items 执行交叉连接操作。结果是一个新的匿名对象序列,每个对象都具有 Color 和 Item 属性。最后,我们打印结果中的每个元素。

输出

Red, Pen
Red, Book
Red, Glass
Green, Pen
Green, Book
Green, Glass
Blue, Pen
Blue, Book
Blue, Glass

何时使用交叉连接

当您想要生成两个列表之间的所有可能组合时,交叉连接非常有用。但是,请记住,结果数量会随着输入列表的大小而迅速增长,因此请明智地使用此操作。

结论

交叉连接是 LINQ 中的一项强大操作,可让您生成两个序列之间的所有可能组合。虽然它可以产生大量结果,但当您需要探索或生成所有可能的组合时,它是一种方便的工具。了解如何在 LINQ 中执行交叉连接将为您在 C# 编程中进行数据操作开辟新的可能性。


相关文章