Ho un datatable, che contiene diverse colonne. voglio calcolare la media di questi con LINQ, senza raggruppamento: ho provato questo:Calcolare la media con linq senza raggruppamento
dtPointCollFb.GroupBy(r => 1).Select(r => new
{
Plus100 = r.Average(item => item.PLUS100),
Plus50 = r.Average(item => item.PLUS50),
Plus10 = r.Average(item => item.PLUS10),
Plus5 = r.Average(item => item.PLUS5),
Plus1 = r.Average(item => item.PLUS1),
NULLA = r.Average(item => item.NULLA)
}).ToList()
Questo funziona perfettamente, quando ho calcolare somma, ma con media producono i primi valori record, non media tutti i record . Penso che questo non sia necessario: .GroupBy (r => 1) perché sto raggruppando con costante.
Ma senza questo non posso usare media solo per l'intera query, e solo per una colonna:
dtPointCollFb.Average(r => r.PLUS100)
Così qualcuno può produrre una soluzione semplice best practice? Se è possibile con la sintassi del metodo, non la query.
voglio qualcosa di simile:
dtPointCollFb.GroupBy(r => 0).Select(r => new
{
Plus100 = r.Sum(item => item.PLUS100)/dtPointCollFb.Rows.Count,
Plus50 = r.Sum(item => item.PLUS50)/dtPointCollFb.Rows.Count,
Plus10 = r.Sum(item => item.PLUS10)/dtPointCollFb.Rows.Count,
Plus5 = r.Sum(item => item.PLUS5)/dtPointCollFb.Rows.Count,
Plus1 = r.Sum(item => item.PLUS1)/dtPointCollFb.Rows.Count,
NULLA = r.Sum(item => item.NULLA)/dtPointCollFb.Rows.Count
}).ToList()
ma con modo più semplice e più pulito. Questo produce la media correttamente.
Non lo stesso, ma esiste un suggerimento per calcolare le medie separatamente. – speti43
Solo per la cronaca, il costrutto 'GroupBy' è, credo, destinato a forzare tutte le medie da calcolare su un singolo round-trip nel database. – Rawling
Sì, sei corretto, sarebbe il modo migliore, perché trasporto molti dati dal server sql. Questo modello è stato progettato per rendere più aggregazione sul server web con linq. Calcolo cose diverse dalla stessa raccolta di dati.Potrei farlo in 5 query sql diverse. Non lo so, forse sarebbe meglio. – speti43