Linq to SQL:如何加入无字段,即笛卡尔加入
Linq to SQL: How to join on no field i.e. cartesian join
如何使 Linq To SQL 加入多个 table,其中 1 table 应该产生笛卡尔积。
为了进一步说明,这里是 SQL 查询的示例。
SELECT Table1.MyField, Setup.SomeField
FROM Table1 INNER JOIN Table2 ON Table1.SomeField = Table2.SomeField, Setup
我对 SQL 的 Linq 是这样的:
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};
如何使 Linq To SQL 加入多个 table,其中 1 table 应该产生笛卡尔积。
为了进一步说明,这里是 SQL 查询的示例。
SELECT Table1.MyField, Setup.SomeField
FROM Table1 INNER JOIN Table2 ON Table1.SomeField = Table2.SomeField, Setup
我对 SQL 的 Linq 是这样的:
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};