First, I find that the @ https://stackoverflow.com/users/2617732/rdans answer is not relevant to your specific example, since you are not applying the where clause after Take .
However, in Example A, both skipTake and takeSkip should generate the same SQL, where it will select the first 10 rows after the 5th row (for a SQL server, for example, with ROW_NUMBER OVER(...) ).
It seems to me that in example B you are trying to take Take and Skip not on IQuerable , but on System.Collections.Generic.List<> (which, of course, is not a territory of NHibernate).
In this case, objects has N elements.
skipTake will be first Skip 10 elements and from the resulting enumeration (which lists over N-10 elements), then Take first 5 elements.
Given that the results are already ordered, the result of skipTake ToList should be the same as in Example A.
takeSkip on the other hand, the first Take 10 elements and from the resulting enumeration (which lists 10 elements) Skip first 5.
So what
source share