【发布时间】:2011-02-17 09:14:45
【问题描述】:
谁能帮忙?
我有 1 个类,基本上它包含成员,并且在该类中是一个列表。
我在列表中的成员也是......所以基本上它是这样的,
我有 2 个成员,每个成员都有多个会话。
我希望只为每个成员返回 1 个会话。
我做了一个 LINQ 查询,但是当然不行……
我想我需要做一个自我加入,有什么想法吗?
基本上我的错误是我的子查询自联接中不存在 m。
var sessions =
from m in this.members
join s in
(
from se in m.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}
如果有人提供任何反馈,我将不胜感激。
提前致谢。
编辑
好的,我设法做到了,但这是最好的方法吗?
var sessions =
from m in this.members
let sn = m.Sessions.OrderByDescending(a => a.SessionEndTime).FirstOrDefault()
select new { MemberName = m.Name, SessionTime = sn.SessioEndTime}
这种方式 sn 包含 1 条记录,但我可以访问所有属性...
但这是使用 LET 的最佳方式吗?
谢谢。
【问题讨论】:
标签: linq linq-to-sql linq-to-objects self-join