From a quick glance, this one you just posted feels way more idiomatic than the Java port.<p>The ultimate idiomatic thing to do would be to expose rethink as an IQueryable&lt;T&gt;, but implementing it can get hard&#x2F;tricky.<p><a href="https:&#x2F;&#x2F;msdn.microsoft.com&#x2F;library&#x2F;System.Linq.IQueryable" rel="nofollow">https:&#x2F;&#x2F;msdn.microsoft.com&#x2F;library&#x2F;System.Linq.IQueryable</a>