我正在使用此库:jsinq。
我想使用子查询创建一个新对象。例如,在.NET LINQ中,我可以这样做:
from a in Attendances
where a.SomeProperty = SomeValue
select new {
.Property1 = a.Property1,
.Property2 = a.Property2,
.Property3 = (from p in People
where p.SomeProperty = a.Property3
select p)
}
这样我得到一个所有人的列表,其中Property3值与列表中返回的EACH对象中出勤的Property3值相匹配。
我在文档或playground上没有看到任何此类示例。做了几次尝试,并没有任何运气。
有人知道这是否可行以及如何进行?
答案 0 :(得分:2)
在寻找LINQ-JavaScript库时,我也开始使用jslinq。但是我决定切换到linq.js,我发现它更接近.NET样式LINQ。
linq.js库的一个最好的部分是它包含一个类似于lambda语法的C#,你可以将子查询放在这些lambda中。
例如,以他们发布的以下linq.js查询为例。
Enumerable.Range(0, 20)
.Where("$ % 3 == 0")
.Select("value, index => {index:index, value:value * 10}")
.WriteLine("$.index + ':' + $.value")
使用输出进行评估:
0:0
1:30
2:60
3:90
4:120
5:150
6:180
现在是子查询的示例:
Enumerable.Range(0, 20)
.Where("$ % 3 == 0")
.Select("value, index => {index:index, value:Enumerable.Range(0, 20).Where(\"$ % 3 == 0\").ToArray()}")
.WriteLine("$.index + ':' + $.value")
返回:
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
这是一个简单的例子,但它确实表明使用linq.js可以进行子查询。