gpt4 book ai didi

javascript - 如何使用 linqjs 链接 "SelectMany"调用(或展平 JSON)

转载 作者:行者123 更新时间:2023-11-29 10:47:01 25 4
gpt4 key购买 nike

如何使用 linq.js 将两个 SelectMany 调用链接在一起。

给定以下 JSON 结构:

[
{
"UpFrontCost": "29.95",
"Currency": "USDAUD",
"FittingDate": "2013-07-08 06:30:16Z",
"Widgets": [
{
"ID": 3,
"Name": "Test1"
},
{
"ID": 4,
"Name": "Test19"
},
{
"ID": 6,
"Name": "Test8"
}
]
},
{
"UpFrontCost": "29.95",
"Currency": "USDAUD",
"FittingDate": "2013-07-08 06:30:16Z",
"Widgets": [
{
"ID": 67,
"Name": "Test1"
},
{
"ID": 99,
"Name": "Test19"
},
{
"ID": 34,
"Name": "Test8"
}
]
}
]

我想要所有“小部件”的列表(在此示例中为 6 个小部件的列表)。

最佳答案

您不需要真正链接任何东西。您的根对象是一个数组,您只想为该数组中的每个对象选择每个小部件。

var query = Enumerable.From(jsonObject)
.SelectMany("$.Widgets") // Select each widget found in the Widgets property
.ToArray();

要展平将父对象的每个属性附加到结果的小部件数组,您可以采用多种方法。您可以使用函数语法来使用嵌套查询。

var query = Enumerable.From(jsonObject)
.SelectMany(function (item) {
return Enumerable.From(item.Widgets)
.Select(function (widget) {
return {
ID: widget.ID,
Name: widget.Name,
UpFrontCost: item.UpFrontCost,
Currency: item.Currency,
FittingDate: item.FittingDate
};
});
})
.ToArray();

或者使用 lambda 字符串语法:

var query = Enumerable.From(items)
.SelectMany("$.Widgets",
// argument 1 ($) - the parent object
// argument 2 ($$) - the selected object (a widget)
"{ ID: $$.ID, Name: $$.Name, UpFrontCost: $.UpFrontCost, Currency: $.Currency, FittingDate: $.FittingDate }"
)
.ToArray();

关于javascript - 如何使用 linqjs 链接 "SelectMany"调用(或展平 JSON),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17695075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com