Somme des données des colonnes de la table à l'aide de linq
Salut à tous, je vais avoir mes données dans la datatable comme suit
SKU Quantity UnitPrice LinePrice
A 10 2 20
A 10 2 20
B 10 2 40
Je voudrais résumer la référence avec les enregistrements en double et obtenir le résultat comme suit
SKU Quantity UnitPrice LinePrice
A 20 2 40
B 10 2 40
J'ai essayé ceci mais pas de chance
var query = from row in lDTSalesOrder.AsEnumerable()
group row by row.Field<string>("SKU") into grp
orderby grp.Key
select new
{
Id = grp.Key,
Sum = grp.Sum(r => r.Field<double>("UnitPrice"))
};
- Pourquoi faites-vous de lDTSalesOrder un énumérable si vous êtes à l'interrogation de la base de données?
- Quel est le problème? J'ai exécuté votre code, et il a renvoyé les résultats valides.
Vous devez vous connecter pour publier un commentaire.
Dans votre exemple de sortie vous n'avez pas fait de résumer le Prix à l'Unité, mais il semble que ce que vous voulez, c'est quelque chose comme ceci:
Ceci va produire:
Si vous voulez vraiment produire un Prix Unitaire de
2
pour le premier résultat record,Sum
n'est pas ce que vous voulez; vous aurez à utiliser une autre fonction d'agrégation.Min
,Max
,Average
, ou mêmeSelect(...).First()
permettrait de produire ce résultat, mais vous auriez à définir plus précisément ce que vous voulez dans votre sortie. Vous pourriez aussi le faire:L'une de ces options va produire:
UnitPrice
, mais j'ai essayé d'ajouter plusieurs solutions qui produisent des OP de l'échantillon de sortie.could not find an implementation of the query pattern for source type 'System.Data.DataTable'. 'GroupBy' not found.