【发布时间】:2021-10-05 05:54:42
【问题描述】:
我正在使用 Syncfusion DocIO 在 .docx 中使用一些道具创建表,但无法按日期创建行 => 在每个新年我都需要新的行数。 我已经创建了 sum 行,但是该行返回所有 sum 以获取其他道具(列), 所以我需要的只是每一年的新行总和。
我的例子:
| Months | Anuity | InterestPaid | PrincipalPaid | BalanceDue | Date |
|---|---|---|---|---|---|
| 1 | 84,69 | 2,50 | 82,19 | 917,81 | 2021/11/12 |
| 2 | 84,69 | 2,29 | 82,40 | 835,41 | 2021/12/12 |
| Sum for year 2021 | |||||
| 3 | 84,69 | 2,09 | 82,61 | 752,80 | 2022/1/12 |
| 4 | 84,69 | 1,88 | 82,81 | 669,99 | 2022/2/12 |
| 5 | 84,69 | 1,67 | 83,02 | 586,97 | 2022/3/12 |
| 6 | 84,69 | 1,47 | 83,23 | 503,75 | 2022/4/12 |
| 7 | 84,69 | 1,26 | 83,43 | 420,31 | 2022/5/12 |
| 8 | 84,69 | 1,05 | 83,64 | 336,67 | 2022/6/12 |
| 9 | 84,69 | 0,84 | 83,85 | 252,82 | 2022/7/12 |
| 10 | 84,69 | 0,63 | 84,06 | 168,75 | 2022/8/12 |
| 11 | 84,69 | 0,42 | 84,27 | 84,48 | 2022/9/12 |
| 12 | 84,69 | 0,21 | 84,48 | 0,00 | 2022/10/12 |
| Sum for year 2022 | |||||
| Sum all | 1016,32 | 16,32 | 1000,00 |
我的代码:
int i = 1;
foreach (var amortizationData in aAmortizationPlanLoanPayment)
{
WTableRow tableRow = tableAmortizationData.AddRow(true);
tableRow.Cells[0].AddParagraph().AppendText(i.ToString());
tableRow.Cells[1].AddParagraph().AppendText(amortizationData.Anuity.ToString());
tableRow.Cells[2].AddParagraph().AppendText(amortizationData.InterestPaid.ToString());
tableRow.Cells[3].AddParagraph().AppendText(amortizationData.PrincipalPaid.ToString());
tableRow.Cells[4].AddParagraph().AppendText(amortizationData.BalanceDue.ToString());
tableRow.Cells[5].AddParagraph().AppendText(amortizationData.Date.AddMonths(aAmortizationPlanLoanPaymentData.Moratorium).ToString("yyyy/M/dd"));
i++;
if (amortizationData.Date.Month == 12)
{
WTableRow YearSumrow = tableAmortizationData.AddRow(true);
WTableCell cell1 = YearSumrow.Cells[0];
var sumYearIWTextRange = cell1.AddParagraph().AppendText($"Sum for year {amortizationData.Date.Year}");
sumYearIWTextRange = YearSumrow.Cells[1].AddParagraph().AppendText(); // need here running sum inside appendText();
sumYearIWTextRange = YearSumrow.Cells[2].AddParagraph().AppendText(); // need here running sum inside appendText();
sumYearIWTextRange = YearSumrow.Cells[3].AddParagraph().AppendText(); // need here running sum inside appendText();
}
if (amortizationData.BalanceDue == 0.00)
{
WTableRow LastYearRow = tableAmortizationData.AddRow(true);
WTableCell cellLastYear = LastYearRow.Cells[0];
var sumLastYearIWTextRange = cellLastYear.AddParagraph().AppendText($"Sum for year {amortizationData.Date.Year}");
sumLastYearIWTextRange = LastYearRow.Cells[1].AddParagraph().AppendText(); // need here running sum inside appendText();
sumLastYearIWTextRange = LastYearRow.Cells[2].AddParagraph().AppendText(); // need here running sum inside appendText();
sumLastYearIWTextRange = LastYearRow.Cells[3].AddParagraph().AppendText(); // need here running sum inside appendText();
}
}
WTableRow tableRowSum = tableAmortizationData.AddRow(true);
WTableCell cell = tableRowSum.Cells[0];
var totalIWTextRage = cell.AddParagraph().AppendText("Sum all");
var totalAmountIWTextRage = tableRowSum.Cells[1].AddParagraph().AppendText(aAmortizationPlanLoanPayment.Sum(p => p.Anuity).ToString());
totalAmountIWTextRage = tableRowSum.Cells[2].AddParagraph().AppendText(aAmortizationPlanLoanPayment.Sum(p => p.InterestPaid).ToString());
totalAmountIWTextRage = tableRowSum.Cells[3].AddParagraph().AppendText(aAmortizationPlanLoanPayment.Sum(p => p.PrincipalPaid).ToString());
【问题讨论】:
-
“我已经用 Linq 创建了 sum 行,但是....” LINQ 在哪里?为什么不能使用 Linq 创建这个总和?你尝试了什么?没有人能说出它失败的原因,因为你没有分享你尝试过的东西......
-
去掉不相关的字体大小和粗线将使我们的代码更具可读性;也许您应该将这些代码移到生成器方法中以真正清理它
-
总之,它看起来像是我不会使用 LINQ 的那种东西;改用 foreach 循环。 Linq 是一把锤子,但不是所有问题都是钉子
标签: c# system.linq.dynamic syncfusion-blazor