This is a similar query using the Criteria API:
session.CreateCriteria<Person>()
.SetProjection(Projections.Min("ID"))
.Add(Subqueries.PropertyIn("ID",
DetachedCriteria.For<Person>()
.Add(Restrictions.Eq("CITY", "SYDNEY"))
.SetProjection(Projections.Property("Id"))
.SetMaxResults(1000)))
.List();
The resulting SQL query uses TOP() instead of ROWNUM, but I think it should do the job.