C# Linq到SQL:如何在无域上连接,即笛卡尔连接

C# Linq到SQL:如何在无域上连接,即笛卡尔连接,c#,linq-to-sql,C#,Linq To Sql,如何在多个表上进行Linq到SQL连接,其中一个表应该生成笛卡尔积 为了进一步说明,下面是SQL查询的一个示例 SELECT Table1.MyField, Setup.SomeField FROM Table1 INNER JOIN Table2 ON Table1.SomeField = Table2.SomeField, Setup 我的Linq到SQL如下所示: var q = from t1 in db.Table1 join t2 in db.Table2 on t

如何在多个表上进行Linq到SQL连接,其中一个表应该生成笛卡尔积

为了进一步说明,下面是SQL查询的一个示例

SELECT Table1.MyField, Setup.SomeField
FROM Table1 INNER JOIN Table2 ON Table1.SomeField = Table2.SomeField, Setup
我的Linq到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};

我在上一次连接中遇到一个错误,
类型推断在调用“join”时失败。

使用
选择many
而不是
连接来执行笛卡尔乘积

在查询语法中,将是:

var query = from t1 in db.Table1
    from t2 in db.Table2
    select new {t1, t2};

使用
SelectMany
而不是
Join
执行笛卡尔乘积

在查询语法中,将是:

var query = from t1 in db.Table1
    from t2 in db.Table2
    select new {t1, t2};

使用
SelectMany
而不是
Join
执行笛卡尔乘积

在查询语法中,将是:

var query = from t1 in db.Table1
    from t2 in db.Table2
    select new {t1, t2};

使用
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};
这也可以做到:

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};
这也可以做到:

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};
这也可以做到:

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};

谢谢,但不确定在何处使用SelectMany?@user1208908,您想在其中对另一个集合执行笛卡尔积。谢谢,但不确定在何处使用SelectMany?@user1208908,您想在其中对另一个集合执行笛卡尔积。谢谢,但不确定在何处使用SelectMany?@user1208908,您希望在其中对另一个集合执行笛卡尔积。谢谢,但不确定在何处使用SelectMany?@user1208908,您希望在其中对另一个集合执行笛卡尔积。