LINQ to SQL查询中的交叉联接或完全联接

本文关键字:SQL to 查询 LINQ | 更新日期: 2023-09-27 17:54:29

我在看书时偶然发现了这个LINQ查询。

var binary = new int[] { 0, 1 };
var q = from b4 in binary
        from b3 in binary
        from b2 in binary
        from b1 in binary
        select String.Format("{0}{1}{2}{3}", b4, b3, b2, b1);
foreach (var element in q)
    Console.WriteLine(element);

上述LINQ的结果将是

0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111

我想看看SQL Server中的情况。

我尝试过的:

create table LINQ(x bit)
insert LINQ select 0
insert LINQ select 1
create table LINQ(x bit, y bit)
insert LINQ select 0,1

我尝试使用LINQPAD(没有给出SQL或lambda版本(,使用上面的临时表。我试过交叉连接,完全连接。我没有得到SQL,它给出了与LINQ相同的结果。

LINQ to SQL查询中的交叉联接或完全联接

SELECT CAST(l1.x as varchar(4)) + CAST(l2.x as varchar(4))+ CAST(l3.x as varchar(4)) + CAST(l4.x as varchar(4))
FROM LINQ as l1, LINQ as l2, LINQ as l3, LINQ as l4
ORDER BY l1.x, l2.x, l3.x, l4.x

sqlfiddle此处