有人可以帮忙吗?
我有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获得。
我想我让这个更清楚一点,如果我还没有那么请告诉我。
答案 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}