Я хотел бы повторно опубликовать свой вопрос, чтобы объяснить более четко.
У меня есть список истории транзакций с соответствующей суммой.
List<Invoice> items = new List<Invoice>() {
new Invoice("808861", -45.85),
new Invoice("822634", -144.32),
new Invoice("822635", -56.63),
new Invoice("835308", 2970.55),
new Invoice("835309", 869.36),
new Invoice("835310", 3050.73),
new Invoice("835311", 657.74),
new Invoice("835312", 168.42),
new Invoice("835348", 2922.69),
new Invoice("835349", 324.5),
new Invoice("835350", 906.3),
new Invoice("835351", 420.21),
new Invoice("835352", 851.7),
new Invoice("838880", 158.43),
new Invoice("838881", 2062.46),
new Invoice("838882", 567.26),
new Invoice("838883", 40.96),
new Invoice("838884", 207.16),
new Invoice("838889", 2726.13),
new Invoice("838890", 29.25),
new Invoice("838891", 1458.28),
new Invoice("838892", 219.58),
new Invoice("839930", 2791.99),
new Invoice("839931", 455.47),
new Invoice("839932", 514.94),
new Invoice("839934", 666.78),
new Invoice("840758", -341.34),
new Invoice("855741", -113.55),
new Invoice("855973", -85.46),
new Invoice("866848", -39.53),
new Invoice("877471", -58.17),
new Invoice("877472", -58.17),
new Invoice("878790", -459.53),
new Invoice("892869", -6353.36)
};
Я хочу разделить транзакцию истории на множество небольших групп со следующими условиями:
1. Maximum for each group will contain 26 transaction history.
2. The total amount in each group must be greater than 0.
3. The last group contains the remaining histories as long as the condition is greater than 0.
Ниже я без разбора напишу, чтобы вычислить пробную сумму транзакции, но конечная группа все еще меньше 0.
private static void ShowSumOf26Invoice(List<Invoice> list, int from, int to)
{
if (list.Count > 26)
{
Console.WriteLine("Total amount from: " + from + " to " + to + " : " + items.GetRange(0,26).Sum(x => x.Amount));
items.RemoveRange(from - 1, 26);
from = from - 1 + 26;
to = to + 26;
ShowSumOf26Invoice(items, from, to);
}
else
{
Console.WriteLine("Total amount from: " + from + " to " + (to - 26 + items.Count) + " : " + items.Sum(x => x.Amount));
}
}
static void Main(string[] args)
{
Console.WriteLine("Total amount: " + items.Sum(x=>x.Amount));
int from = 1;
int to = 26;
ShowSumOf26Invoice(items, from, to);
Console.WriteLine("Press any key to end the program!");
Console.ReadKey();
}