如何在LINQ查询中使用JOIN

时间:2010-02-24 18:53:38

标签: linq entity-framework linq-to-entities

我有以下表结构,它被导入到Entity Framework项目中: (注意:我在表1中将T1Name误导为T2Name)

alt text http://digitalsamurai.us/images/drawing2.png

我已经标记了实体对象。多对多联合表Table5表示为EntityCollection< Entity4>。在Entity3中,以及作为EntityCollection< Entity3>在Entity4中(EntityCollection< T>实现IEnumerable< T>,因此可以查询它)。我需要构造一个结果集:

T1Name,T2Name,T3Name

这将导致T1Name和T2Name的重复输入。

有人可以告诉我如何编写这个LINQ查询吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

var q = from e3 in Context.Table3
        from e4 in e3.Table4s     // that's your many-to-many
        select new
        {
            Name3 = e3.T3Name,
            Name2 = e4.Table2.T2Name,
            Name1 = e4.Table1.T1Name // presuming Table1.T2Name in your diagram is a typo
        };

“点符号”:

var q = Context.Table3
               .SelectMany(e3 => e3.Select(e4 => 
                                               new {
                                                   Name3 = e3.T3Name,
                                                   Name2 = e4.Table2.T2Name,
                                                   Name1 = e4.Table1.T1Name
                                               });

注意我根本没有使用join。这是故意的; you don't need it her