public void PopulateReplacementsList() { var recordsCount = PackageRecords.Count(); var rowsPerSlide = RowsPerSlide; OutputReplacementsLists = new List <Dictionary <string, string> >(); for (var i = 0; i < recordsCount; i += rowsPerSlide) { var slideRows = new Dictionary <string, string>(); slideRows.Add("Digital Media Campaign: AdvertiserNameHere", _container.EditedContent.ScheduleSettings.BusinessName); for (var j = 0; j < rowsPerSlide; j++) { if ((i + j) < recordsCount) { var packageRecord = PackageRecords.ElementAt(i + j); var mainInfo = new List <string>(); if (PackageSettings.ShowCategory && !String.IsNullOrEmpty(packageRecord.Category)) { mainInfo.Add(packageRecord.Category); } if (PackageSettings.ShowGroup && !String.IsNullOrEmpty(packageRecord.SubCategory)) { mainInfo.Add(packageRecord.SubCategory); } if (PackageSettings.ShowProduct && !String.IsNullOrEmpty(packageRecord.Name)) { mainInfo.Add(packageRecord.Name); } var additionalInfo = new List <string>(); if (PackageSettings.ShowLocation && !String.IsNullOrEmpty(packageRecord.Location)) { additionalInfo.Add(packageRecord.Location); } if (PackageSettings.ShowInfo && !String.IsNullOrEmpty(packageRecord.Info)) { additionalInfo.Add(packageRecord.Info); } var pricingInfo = new List <string>(); if (PackageSettings.ShowImpressions && packageRecord.ImpressionsCalculated.HasValue) { pricingInfo.Add(String.Format("Impressions: {0}", packageRecord.ImpressionsCalculated.Value.ToString("#,##0"))); } if (PackageSettings.ShowInvestment && packageRecord.InvestmentCalculated.HasValue) { pricingInfo.Add(String.Format("Investment: {0}", packageRecord.InvestmentCalculated.Value.ToString("$#,###.00"))); } if (PackageSettings.ShowCPM && packageRecord.CPMCalculated.HasValue) { pricingInfo.Add(String.Format("CPM: {0}", packageRecord.CPMCalculated.Value.ToString("$#,###.00"))); } if (PackageSettings.ShowRate && packageRecord.Rate.HasValue) { pricingInfo.Add(String.Format("Rate: {0}", packageRecord.Rate.Value.ToString("$#,###.00"))); } if (pricingInfo.Any()) { additionalInfo.Add(String.Join(", ", pricingInfo)); } var mainInfoRow = mainInfo.Any() ? String.Join(" | ", mainInfo.ToArray()) : String.Empty; var additionalInfoRow = additionalInfo.Any() ? String.Format("{0}{2}{2}{1}", additionalInfo.First(), String.Join(" | ", additionalInfo.Skip(1)), (char)13) : String.Empty; if (!String.IsNullOrEmpty(mainInfoRow) && !String.IsNullOrEmpty(additionalInfoRow)) { slideRows.Add(String.Format("Category{0} | Group{0} | Product{0}", j + 1), mainInfoRow); slideRows.Add(String.Format("ScheduleProductInfo{0}{1}{1}NotesandComments{0}", j + 1, (char)13), additionalInfoRow); } else if (!String.IsNullOrEmpty(mainInfoRow)) { slideRows.Add(String.Format("Category{0} | Group{0} | Product{0}", j + 1), mainInfoRow); slideRows.Add(String.Format("ScheduleProductInfo{0}{1}{1}NotesandComments{0}", j + 1, (char)13), "DeleteRow"); } else if (!String.IsNullOrEmpty(additionalInfoRow)) { slideRows.Add(String.Format("Category{0} | Group{0} | Product{0}", j + 1), additionalInfoRow); slideRows.Add(String.Format("ScheduleProductInfo{0}{1}{1}NotesandComments{0}", j + 1, (char)13), "DeleteRow"); } } else { slideRows.Add(String.Format("Category{0} | Group{0} | Product{0}", j + 1), "DeleteRow"); slideRows.Add(String.Format("ScheduleProductInfo{0}{1}{1}NotesandComments{0}", j + 1, (char)13), "DeleteRow"); } } OutputReplacementsLists.Add(slideRows); } }