public class Budget
{
public string SeasonNo { get; set; }
public string SeasonName { get; set; }
public string typeProductCd { get; set; }
public string typeProductDescription { get; set; }
public Decimal UsdBudgetRetail { get; set; }
}
List<Budget> list1
List<Budget> list2
List<Budget> ListUngrouped =
list1.Concat(list2).ToList();
List<Budget> listGrouped = ListUngrouped
.GroupBy(x => new { x.SeasonNo, x.typeProductCd })
.Select(group => new { group.Key, UsdBudgetRetail = group.Sum(x => x.UsdActualRetail) })
.Cast<BudgetAndActualLineInfoBySeasonDto>()
.ToList();
Répondre
On ne sait pas très bien ce que vous essayez d'accomplir. Voici quelques problèmes avec votre code tel qu'il est en ce moment qu'il faudra aborder:
Budget
ne contient pas de définition deUsdActualRetail
.List<BudgetAndActualLineInfoBySeasonDto>
ne peut pas être casté enList<Budget>
.- L'objet
group
ne peut pas être implicitement casté enBudgetAndActualLineInfoBySeasonDto
. - J'ai déjà corrigé des fautes d'orthographe de
BUDGET
,concat
, ettoList
. - Pour que le regroupement fonctionne, vous devez fournir une implémentation personnalisée pour la comparaison d'égalité pour votre objet GroupBy.
Faire un tas de suppositions éclairées sauvages sur la façon dont vous voulez que ce code fonctionne et quelles sont les définitions des autres classes manquantes pourrait être, voici un (LINQPad prêt) complete working code sample qui montre les valeurs et les sommes regroupées, avec une mise en œuvre d'égalité personnalisée de travail:
void Main()
{
List<Budget> list1 = new List<Budget>() {
new Budget { SeasonNo = "1", SeasonName = "Test 1", typeProductCd = "3", UsdActualRetail = 1.01m },
new Budget { SeasonNo = "1", SeasonName = "Test 2", typeProductCd = "3", UsdActualRetail = 1.01m },
new Budget { SeasonNo = "1", SeasonName = "Test 3", typeProductCd = "3", UsdActualRetail = 1.01m },
new Budget { SeasonNo = "1", SeasonName = "Test 4", typeProductCd = "3", UsdActualRetail = 1.01m },
};
List<Budget> list2 = new List<Budget>() {
new Budget { SeasonNo = "2", SeasonName = "Test 5", typeProductCd = "4", UsdActualRetail = 1.02m },
new Budget { SeasonNo = "2", SeasonName = "Test 6", typeProductCd = "4", UsdActualRetail = 1.02m },
new Budget { SeasonNo = "2", SeasonName = "Test 7", typeProductCd = "4", UsdActualRetail = 1.02m },
};
List<Budget> listUngrouped = list1.Concat(list2).ToList();
List<BudgetAndActualLineInfoBySeasonDto> listGrouped =
listUngrouped
.GroupBy(x => new SeasonDto { SeasonNo = x.SeasonNo, typeProductCd = x.typeProductCd })
.Select(group => new BudgetAndActualLineInfoBySeasonDto {
SeasonDto = group.Key,
UsdBudgetRetail = group.Sum(x => x.UsdActualRetail)
})
.Cast<BudgetAndActualLineInfoBySeasonDto>()
.ToList();
Console.WriteLine(listGrouped);
}
// Define other methods and classes here
public class SeasonDto
{
public string SeasonNo { get; set; }
public string typeProductCd { get; set; }
public override bool Equals(object other)
{
SeasonDto otherS = other as SeasonDto;
if (otherS != null)
{
return this.SeasonNo.Equals(otherS.SeasonNo) &&
this.typeProductCd.Equals(otherS.typeProductCd);
}
else
{
return false;
}
}
public override int GetHashCode()
{
return SeasonNo.GetHashCode() + typeProductCd.GetHashCode();
}
}
public class BudgetAndActualLineInfoBySeasonDto
{
public SeasonDto SeasonDto { get; set; }
public decimal UsdBudgetRetail { get; set; }
}
public class Budget
{
public string SeasonNo { get; set; }
public string SeasonName { get; set; }
public string typeProductCd { get; set; }
public string typeProductDescription { get; set; }
public Decimal UsdActualRetail { get; set; }
}
Espérons que cela aide! Nous serons en mesure de mieux vous aider si vous pouvez améliorer considérablement votre question.
Salut merci pour votre réponse, oui j'ai quelques erreurs dans les attributs, mais je vais vous expliquer l'idée principale. J'ai plusieurs liste de budget, je veux les grouper d'abord par saison que par typeProductCD – user847236
Salut merci pour votre réponse, oui j'ai quelques erreurs dans les attributs, mais je vais expliquer l'idée principale. J'ai plusieurs liste de budget, je veux les regrouper d'abord par saison que par typeProductCD et faire la somme de USDActual au détail des éléments qui partagent le même UsdActualRetail. Je m'attends à une nouvelle liste en conséquence, donc je peux le gérer pour l'afficher dans un rapport, il n'y a pas BudgetAndActualLineInfoBySeasonDto c'est juste Budget (mon dto) et UsdBudgetRetail est UsdActualRetail – user847236
- 1. groupe linq & requête somme
- 2. Groupe LINQ par et Somme syntaxe
- 3. groupe multiple par et Somme LINQ
- 4. groupe par et somme
- 5. groupe somme mysql() par
- 6. Linq obtenir la somme du groupe de données par date
- 7. LINQ Joindre 2 Datatables et avec somme et groupe par
- 8. Groupe Linq par requête
- 9. Linq ordre par, groupe par et ordre par chaque groupe?
- 10. somme SQL avec le groupe par
- 11. C# LINQ calculé Groupe Par
- 12. groupe linq par instruction
- 13. Groupe LINQ par question
- 14. Groupe Linq par mois
- 15. Groupe Linq par instruction
- 16. Groupe LINQ par par nombre
- 17. liste <String[]> .groupby/orderby Linq
- 18. groupe Linq par des groupes
- 19. linq valeur calculée avec groupe par
- 20. mysql groupe sélect somme par date
- 21. joindre avec somme et groupe par
- 22. Comment construire cette requête (somme, groupe par)
- 23. mysql gauche rejoindre et groupe somme par
- 24. obtenir la somme du groupe maxs par
- 25. postgres coalesce champs, somme et groupe par
- 26. Somme cumulée par groupe dans sqldf?
- 27. groupe PostgreSQL par avec la somme
- 28. Somme cumulative temporelle Pandas par groupe
- 29. Groupe par en somme DataTable colonne
- 30. MySQL avec 3 groupe par et somme
Quelle est votre question? vous pourriez vouloir clarifier ce dont vous avez besoin si vous voulez de l'aide. – Taryn
Où 'UsdActualRetail' est-il défini? Où est défini 'BudgetAndActualLineInfoBySeasonDto'? Comment 'list1' et' list2' sont-ils remplis? Comment lancez-vous 'List' 'Liste '? Quel est le comportement que vous avez eu et quel était le comportement attendu? Si vous avez une exception, publiez le message d'exception et le numéro de ligne où il s'est produit. Pouvez-vous fournir un exemple de code * complet *, ** travail ** qui illustre le problème que vous rencontrez? –
mellamokb