【问题标题】:linq.js group by, aggregate multiple fieldslinq.js 分组,聚合多个字段
【发布时间】:2016-04-13 02:09:33
【问题描述】:

我正在尝试按 2 个属性对我的数据进行分组,并对每个组的其他两个属性求和。我的代码有点偏离,因为我得到的两个字段(值和数量)的总和相同。我错过了什么?谢谢!

代码 -

var linq = Enumerable.from(data);
        var result = linq
            .groupBy(
                "{ pCo: $.portCo , sName: $.secName }",
                "$.value, $.quantity",
                "{ portCo: $.pCo, security: $.sName, value: $$.sum($.value), quantity: $$.sum($.quantity) }",
                "$.pCo + ' ' + $.secName")
            .toArray();

【问题讨论】:

    标签: linq.js


    【解决方案1】:

    好的,经过 n 次试验和 (n-1) 次错误,让它使用以下语法:

    var linq = Enumerable.from(data);
            var result = linq
                .groupBy(
                    "{ pCo: $.portCo , sName: $.secName }",
                    null,
                    "{ portCo: $.pCo, security: $.sName, value: $$.sum('$.value'), quantity: $$.sum('$.quantity') }",
                    "$.pCo + ' ' + $.secName")
                .toArray();
    

    我不清楚 null 的基本原理,我需要在 sum 函数中为属性名称加上 '$.x' 引号。

    杰夫在此处的回答中获得解决方案的灵感 - https://stackoverflow.com/a/15647792/2011729

    【讨论】:

    • 在需要函数时传入null 将被替换为标识函数。在这种情况下,您只需要生成一个包含valuequantity 属性的对象。您的原件不是有效的表达方式。然后,正如您所知道的,您需要将选择器传递给 sum() 函数。
    猜你喜欢
    • 2018-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    相关资源
    最近更新 更多