Subject to only two levels in the hierarchy, you could simply do something like..
int userId = 1;
var query = items.Where(i => i.userid == userId).GroupBy(i => i.originalid).Select(i => new
{
LatestItem = i.OrderByDescending(x => x.id).First(),
History = i.OrderByDescending(x => x.id).Skip(1).Select(x => new
{
id = x.id,
originalid = x.originalid
}).ToList()
}).ToList();
You'll need to test performance but it should give you what it appears you're after.