<i>The way that such chaining is possible is that each "query" (e.g., Users.order(...)) returns not an array of data, but a query object that one can manipulate still further.</i><p>That sounds just like the IQueryable&#60;T&#62; interface used in .Net's LINQ.