I also started working with jslinq while searching for the LINQ-JavaScript library. However, I decided to switch to linq.js, which turned out to be closer to LINQ.NET.
http://linqjs.codeplex.com
http://neue.cc/reference.htm
One of the best parts of the linq.js library is that it contains C # lambda syntax, and you can put subqueries in these lambdas.
For example, take the following linq.js request, which they sent as an example.
Enumerable.Range(0, 20) .Where("$ % 3 == 0") .Select("value, index => {index:index, value:value * 10}") .WriteLine("$.index + ':' + $.value")
Computes with the output:
0:0 1:30 2:60 3:90 4:120 5:150 6:180
Now here is an example with a subquery:
Enumerable.Range(0, 20) .Where("$ % 3 == 0") .Select("value, index => {index:index, value:Enumerable.Range(0, 20).Where(\"$ % 3 == 0\").ToArray()}") .WriteLine("$.index + ':' + $.value")
Return:
0:0,3,6,9,12,15,18 1:0,3,6,9,12,15,18 2:0,3,6,9,12,15,18 3:0,3,6,9,12,15,18 4:0,3,6,9,12,15,18 5:0,3,6,9,12,15,18 6:0,3,6,9,12,15,18
This is a trivial example, but it shows that subqueries are possible with linq.js.