This is not a direct translation (Entity Framework cannot use Row Number), but the results should be the same
var query = from m in context.Messages
where (from x in context.Messages
where m.Originator == x.Originator
where x.SentTime > m.SentTime
select x).Any() == false
orderby m.SentTime desc
select new
{
m.siteId,
m.originator,
m.sentTime,
m.mode,
m.mainsFrequency,
m.gensetFrequency,
m.dgBattery,
m.runHours,
m.fuel,
m.messageID,
m.messageText,
};