Новичку в MVVC нужна помощь в подведении итогов внутри a для каждого цикла в моей модели
Мне нужна помощь с простым для каждого цикла суммированием двух полей на треть.
Модель UnrecognizedOIModel содержит следующие поля:
public UnrecognizedOIModel(DataRow row) { Invoice = row.Field<string>("InvoiceNbr").Trim(); InvoiceDate = row.Field<DateTime>("InvoiceDate"); Customer = row.Field<string>("BillName").Trim(); ProductGroup = row.Field<string>("ProductGroup"); GroupDescription = row.Field<string>("Descr"); PromoGroup = row.Field<string>("PlanDescr"); Cases = row.Field<double>("QtyShip"); PlanKey = row.Field<string>("AR_PlanKey").Trim(); Allowance = row.Field<double>("AllowanceAmt"); Liability = row.Field<double>("Liability"); }Мне нужно суммировать дела и ответственность по Промогруппе. Я новичок в словарях, селекторах и т. д.
Моя текущая модель данных выглядит следующим образом:
public class UnrecognizedOIsData { public UnrecognizedOIsArgs Args { get; set; } public List<UnrecognizedOIModel> UnrecognizedOIs { get; set; } public SelectorModel CustSelector { get; set; } public SelectorModel PromoSelector { get; set; } public Dictionary<string, UnrecognizedOIsSubTotal> GetSubTotals() { var d = new Dictionary<string, UnrecognizedOIsSubTotal>(); foreach (var row in UnrecognizedOIs) { //For each object in row find promogroup in dictionary //if not there add promogroup to dictionary //Add Cases and Liability to sums } return d; } } public class UnrecognizedOIsSubTotal { public int TotCases { get; set; } public double TotLiability { get; set; } }Селекторы используются на странице, где я уже показал таблицу по клиенту. Теперь мне нужно суммировать эти данные по промо-группе.
Помогите, пожалуйста!
Что я уже пробовал:
foreach (var row in UnrecognizedOIs) { //For each object in row find promogroup in dictionary //if not there add promogroup to dictionary //Add Cases and Liability to sums var PromoGroup = row.PromoGroup; if (!d.ContainsKey(row.PromoGroup)) { d.Add(PromoGroup, <UnrecognizedOIsSubTotal> row.Cases, row.Liability); } d[PromoGroup]. new Dictionary<string, UnrecognizedOIsSubTotal>(); } return d;
Спасибо за ответ, но он не сработал.
Я получил ошибки на UnrecognizedOISSubtotal
d.Add(PromoGroup, <UnrecognizedOIsSubTotal> row.Cases, row.Liability); } d[PromoGroup]. new Dictionary<string, UnrecognizedOIsSubTotal>();
Поэтому я сделал это:
var PromoGroup = row.PromoGroup; if (!d.ContainsKey(row.PromoGroup)) { d.Add(PromoGroup, new UnrecognizedOIsSubTotal()); } d[PromoGroup].TotCases = d[PromoGroup].TotCases + row.Cases; d[PromoGroup].TotLiability = d[PromoGroup].TotLiability + row.Liability; }
Теперь у меня возникли проблемы с отчетом страница cshtml выглядит следующим образом:
{ var subTotals = Model.GetSubTotals(); var promoKey = subTotals.Keys.OrderBy(k => k); } foreach (var promoKey in subTotals[PromoGroup].Keys.OrderBy(k => k)) { var sub = subTotals[promoKey]; } <table class="report"><thead><tr><th>Promo Group</th><th>Cases</th><th>Liability</th></tr></thead><tbody><tr><td>sub.promoKey</td><td>sub.Cases</td><td>sub.Liability</td></tr></tbody></table> No error but when it runs I get a printout of the for each loop on the html page