我试图在我的project.The问题中使用Linq.Js,那就是我必须应用分组,然后在一些列上使用sum,并从一些列中挑选第一个。例如:
var list = [
{ a: 2, b: 4, c: 1 },
{ a: 2, b: 3, c: 7 },
{ a: 2, b: 3, c: 3 },
{ a: 4, b: 7, c: 5 },
{ a: 7, b: 3, c: 2 },
{ a: 4, b: 1, c: 5 }]; 结果将在a上分组,b的和,c的第一个
a:2,b:10,c:1
a:7,b:3,c:2
a:4,b:1,c:5到现在为止我都试过了
var aggregatedObject = Enumerable.From(claimForCalculation)
.GroupBy("$.a", null,
function (key, g) {
var result = {
groupedKey: key,
chargedQty: g.Sum("$.b"),
chargedRate: g.FirstOrDefault("$.c"),
}
return result;
}, function (x) { return x }).ToArray();但它不起作用。
发布于 2016-06-01 08:35:29
问题是您不应该将任何内容传递给FirstOrDefault()方法。这里的参数是用于选择第一项的谓词,而不是选择器。只需获取组中的第一个并获取c属性。
你可以这样写你的查询:
var query = Enumerable.From(list)
.GroupBy("$.a", null, "{ a: $, b: $$.Sum('$.b'), c: $$.First().c }")
.ToArray();https://stackoverflow.com/questions/37539318
复制相似问题