У меня есть следующий SQL-запрос:LINQ самостоятельно реферирование запрос
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, который является саморегуляцией.
Действительно, кто уменьшает сообщение, которое составляет 6 месяцев, особенно сообщение, на которое один отвечает на свой вопрос? По крайней мере, обратите внимание на то, почему вы были вынуждены делать такую глупость. – Chris