Force Take() to get less than count if there are no enough elements
This should work as is with your query - Take(3)
will return 3 elements at most - but less if there are less items in the enumeration.
Enumerable.Take
does do that automatically. Your code sample as given should work:
Take enumerates source and yields elements until count elements have been yielded or source contains no more elements.