LINQ:内部连接到子查询中的第一行?

时间:2011-02-16 14:51:30

标签: linq linq-to-sql linq-to-objects

有人可以帮忙吗?

我有2个班级,基本上有1个班级和其他会议。

它们与一个名为“name”的公共字段连接在一起

有1个成员,但可以是多个会话。

所以如果我做一个标准的加入我会回来1个成员和很多会话..我只想回到第一排会话。

会话中有一个名为SessioEndTime的字段。所以我需要由DESC订购这个来挑选第一条记录。

这是我的linq我的回报太多,我想我需要一个子查询,但我有点困惑。

  var sessions = from m in this.members 
                   join s in this.sessions
                   on m.Name equals s.Name
                   select new { MemberName = m.Name, SessionTime = s.SessioEndTime};

帮助真的很感激。

修改

为了说清楚,想象我有5个成员,每个成员都有NUMEROUS个会话。我只希望收到我的5个成员,但每个只有1个会话,该会话是最新的会话,可以从SessionEndTime获得。

我想我让这个更清楚一点,如果我还没有那么请告诉我。

1 个答案:

答案 0 :(得分:7)

试试这个:

var sessions =  
    from m in this.members                     
    join s in 
    (
        from se in this.sessions
        group se by se.Name into g
        select new {Name = g.Key, SessioEndTime = g.Max(a=>a.SessioEndTime)}
    )   
    on m.Name equals s.Name                    
    select new { MemberName = m.Name, SessionTime = s.SessioEndTime}