2016-04-13 41 views
1

Verilerimi 2 özellik ile gruplandırmaya çalışıyorum ve her grup için diğer iki özelliği toplamalıyım. Kodum sadece biraz kapalı çünkü hem alan hem de değer için aynı tutarı elde ediyorum. Neyi kaçırıyorum? Teşekkürler! -linq.js grubu, birden çok alanı birleştirin

kod n denemeleri ve (n-1) hataları, aşağıdaki sözdizimi ile çalışmak için aldım sonra

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(); 

cevap

2

Tamam,:

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(); 

boş gerekçesi değildir bana açık ve toplam işlevindeki özellik isimleri için $ .x 'tırnaklarına ihtiyacım vardı. Burada Jeff'in cevabını çözümü için

İlham - https://stackoverflow.com/a/15647792/2011729

+0

bir işlev beklenen zaman null' 'Pas kimlik fonksiyonu ile değiştirilecektir. Bu durumda, sadece bir "değer" ve "miktar" özelliği içeren bir nesne üretmeniz gerekiyordu. Orijinaliniz geçerli bir ifade değildi. Sonra anladığınız gibi, bir toplayıcıya 'sum() 'fonksiyonuna geçmek zorundaydınız. –

İlgili konular