如何在linq流利的情况下加入M:N关系?

时间:2014-06-30 13:53:14

标签: linq join fluent

在我的数据库中有三个表:

  • 表A(IDTableA,...)
  • TableAB(IDTableA,IDTableB,...)
  • 表B(IDTableB,...)

在我的实体模型中,我只有两个实体:

TableA
{
    long IDTableA;
    ICollection<TableB> TableB;
}


TableB
{
    long IDTableB;
    ICollection<TableA> TableA;
}

我想知道侯可以做两个表之间的连接和在哪里的条件,这样的事情:

select TableA.*
from TableA, TableB, TableAB
where TableA.IDTableA = TableAB-IDTableAB
and TableB.IDTableB = TableAB.TableB
and Table.MyField > 10

我知道如何使用查询语法来做到这一点,但我想知道使用linq流利的wat。

感谢。

1 个答案:

答案 0 :(得分:1)

回答提示: How to join with an or clause in Fluent LINQ

流利语法

var qJoin = context.User.SelectMany(
    u => context.Hierarchy
         .Where(h => u.OrganisationId == h.OrganisationId)
         ,(u, h) => new { u, h });

查询语法

var qJoin = from u in context.User
         from h in context.Hierarchy
         where u.OrganisationId == h.OrganisationId
         select new { u, h };