J'ai besoin de calculer une somme de produit de deux champs. Cela sera utilisé pour le prix moyen pondéré. avgPrice = somme (prix * volume)/somme (volume). Les deux erreurs return1 et price2 retournent "La distribution spécifiée n'est pas valide."LINQ Produit de deux champs dans la requête agrégée
var result3 = from sym in dataTableAsEnumerable()
group sym by new { symbol = sym["symbol"] } into grouped
select new
{
// SYMBOL = sym.Field<string>("symbolCAN"),
SYMBOL = grouped.Key.symbol,
tradeTimeMin = grouped.Min(e => e["tradeTimeMin"]),
tradeTimeMax = grouped.Max(e => e["tradeTimeMax"]),
volume = grouped.Sum(e => (int)e["volume"]),
price1 = grouped.Sum(e => (double)e["volume"] * (double)e["symbol"])/grouped.Sum(e => (double)e["volume"]),
price2 = grouped.Sum(e => (e.Field<decimal>("volume") * e.Field<decimal>("symbol")))
};
Qu'est-ce qui se passe si vous définissez le volume = grouped.Sum (e => (décimal) e [ "volume"])? ou si vous définissez volume = grouped.Sum (e => (décimal) e ["symbole"])? Avez-vous toujours l'erreur de distribution? –
Salut, la requête fonctionne bien pour un seul champ. Je peux obtenir grouped.Sum (e => (décimal) e ["volume"]) sans problèmes. Ce que je ne peux pas faire est d'obtenir un produit, une division ou une somme de valeurs de deux champs. C'est-à-dire que je ne peux pas obtenir de somme (volume * prix). Je souhaite utiliser LINQ pour calculer des moyennes et des valeurs agrégées autres que les simples somme, min et max sur un seul champ. –