A solution using Linq:
add the namespace:
using System.Linq;
using NHibernate;
using NHibernate.Linq;
And query something like this:
var result = (from s in session.Query<Service>()
where s.Serie.Id == serie.Id
let count = session.Query<Vote>().Count(v => v.Service.Id == s.Id)
select new ServiceWithCount() { Service = s, Count = count })
.ToList();
I think exposing your entity Service
in the DTO is not a good pratice, you could expose simple properties just to get the information you want to transfer, avoiding the risk to get a proxy from nhibernate inside the DTO.