我有以下 SQL 查询:
select
p1.[id],
p1.[useraccountid],
p1.[subject],
p1.[message],
p1.[views],
p1.[parentid],
max(
case
when p2.[created] is null then p1.[created]
else p2.[created]
end
) as LastUpdate
from forumposts p1
left join
(
select
id, parentid, created
from
forumposts
) p2 on p2.parentid = p1.id
where
p1.[parentid] is null
group by
p1.[id],
p1.[useraccountid],
p1.[subject],
p1.[message],
p1.[views],
p1.[parentid]
order by LastUpdate desc
使用以下类:
public class ForumPost : PersistedObject
{
public int Views { get; set; }
public string Message { get; set; }
public string Subject { get; set; }
public ForumPost Parent { get; set; }
public UserAccount UserAccount { get; set; }
public IList<ForumPost> Replies { get; set; }
}
我将如何在 LINQ 中复制这样的查询?我尝试了几种变体,但似乎无法获得正确的连接语法。这仅仅是一个对 LINQ 来说太复杂的查询的例子吗?可以通过某种方式使用嵌套查询来完成吗?
查询的目的是查找最近更新的帖子,即回复帖子会将其推到列表顶部。回复由自引用的 ParentID 列定义。