如何在多个表上进行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'
的最后一次加入时收到错误。
答案 0 :(得分:2)
使用SelectMany
而不是Join
来执行笛卡尔积。
在查询语法中:
var query = from t1 in db.Table1
from t2 in db.Table2
select new {t1, t2};
答案 1 :(得分:1)
这也可以:
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};