Linq to SQL:如何在没有字段上连接,即笛卡尔连接
本文关键字:连接 字段 笛卡尔 SQL to Linq | 更新日期: 2023-09-27 18:37:25
如何在多个表上进行 Linq To SQL 联接,其中 1 个表应该产生笛卡尔乘积。
为了更清楚地说明,下面是 SQL 查询的示例。
SELECT Table1.MyField, Setup.SomeField
FROM Table1 INNER JOIN Table2 ON Table1.SomeField = Table2.SomeField, Setup
我的Linq to SQL是这样的:
var q = from t1 in db.Table1
join t2 in db.Table2 on t1.SomeField equals t2.SomeField
join setup in db.Setup
select new {t1.MyField, setup.SomeField};
我在Type inference failed in the call to 'Join'
的最后一次加入时收到错误。
使用SelectMany
而不是Join
来执行笛卡尔乘积。
在查询语法中,这将是:
var query = from t1 in db.Table1
from t2 in db.Table2
select new {t1, t2};
这也将做:
var q = from t1 in db.Table1
join t2 in db.Table2 on t1.SomeField equals t2.SomeField
from setup in db.Setup
select new {t1.MyField, setup.SomeField};