I know this post is old, but I just ran into the same problem and thought that I would share an answer, which, it seemed to me, is much simpler.
No matter what - NHibernate will request multiple rows for each parent object (unless you use SubSelect instead of Join). Because of this, we know that we are going to get a list of, say, 500 objects, when in fact there are only 100 unique objects.
Since these objects are already requested and already in memory - why not use LINQ?
Based on this question: LINQ's Distinct () for a particular property, the answer with the highest + gives a very eloquent solution. Create another list and LINQ will make a clear comparison. If we could make a difference in the database, that would be the best option - but since it is not an option, LINQ seems like a good solution.
source share