c # à l'aide de linq to groupe par plusieurs colonnes dans une table de données
J'ai trois colonnes dans une table de données: chaîne de caractères, DateTime, et décimal. Je veux du groupe par la chaîne de décimales et de colonne, et pour les lignes regroupées je veux faire la somme des valeurs décimales. Je ne sais comment faire la somme de la partie, mais comment voulez-vous groupe de deux colonnes dans une table de données?
C'est mon code si loin, qui ne fonctionne pas correctement:
var newSort = from row in objectTable.AsEnumerable()
group row by new {ID = row.Field<string>("resource_name"), time1 = row.Field<DateTime>("day_date")} into grp
orderby grp.Key
select new
{
resource_name1 = grp.Key.ID,
day_date1 = grp.Key.time1,
Sum = grp.Sum(r => r.Field<Decimal>("actual_hrs"))
};
"Le compilateur pense que tous les objets sont les mêmes, de sorte que chaque ligne est groupée"--voulez-vous dire tous les objets se mettre dans un grand groupe, donc, vous vous retrouvez avec un seul point dans le
oui, newSort ne contient que le dernier élément de la datatable
La requête est correcte pour moi. Pouvez-vous vérifier et re-vérifier vos entrées?
newSort
collection?oui, newSort ne contient que le dernier élément de la datatable
La requête est correcte pour moi. Pouvez-vous vérifier et re-vérifier vos entrées?
OriginalL'auteur Sam | 2011-07-01
Vous devez vous connecter pour publier un commentaire.
Je ne pense pas que vous êtes de nous donner l'histoire complète. Autres que
orderby
de ne pas travailler avec les types anonymes (le code que vous avez donné n'aurait pas compilé), votre requête doit fonctionner de la façon dont vous le souhaitez. Je viens de mettre cela dans LINQPad:... et j'ai obtenu ces résultats:
g.col1 + g.col2).FirstOrDefault()?
OriginalL'auteur StriplingWarrior
utiliser ce code
OriginalL'auteur ar.gorgin
Pour ceux qui veulent une solution Vb.net voici un exemple:
OriginalL'auteur user3837750