public class Order
{
public int OrderId { get; set; }
public int CustomerId { get; set; }
public DateTime OrderDate { get; set; }
public decimal Amount { get; set; }
}
private void button3_Click(object sender, EventArgs e)
{
var orders = new List<Order>
{
new Order { OrderId = 1, CustomerId = 100, OrderDate = new DateTime(2023, 1, 5), Amount = 200 },
new Order { OrderId = 2, CustomerId = 100, OrderDate = new DateTime(2023, 1, 3), Amount = 150 },
new Order { OrderId = 3, CustomerId = 200, OrderDate = new DateTime(2023, 1, 4), Amount = 300 },
new Order { OrderId = 4, CustomerId = 100, OrderDate = new DateTime(2023, 1, 6), Amount = 250 },
new Order { OrderId = 5, CustomerId = 200, OrderDate = new DateTime(2023, 1, 2), Amount = 100 }
};
var result = orders
.GroupBy(o => o.CustomerId)
.SelectMany(group =>
group.OrderBy(o => o.OrderDate)
.Select((order, index) => new
{
order.OrderId,
order.CustomerId,
order.OrderDate,
order.Amount,
RowNumber = index + 1
})
)
.OrderBy(r => r.CustomerId)
.ThenBy(r => r.RowNumber);
richTextBox1.Text = JsonConvert.SerializeObject(result, Formatting.Indented);
}
[
{
"OrderId": 2,
"CustomerId": 100,
"OrderDate": "2023-01-03T00:00:00",
"Amount": 150.0,
"RowNumber": 1
},
{
"OrderId": 1,
"CustomerId": 100,
"OrderDate": "2023-01-05T00:00:00",
"Amount": 200.0,
"RowNumber": 2
},
{
"OrderId": 4,
"CustomerId": 100,
"OrderDate": "2023-01-06T00:00:00",
"Amount": 250.0,
"RowNumber": 3
},
{
"OrderId": 5,
"CustomerId": 200,
"OrderDate": "2023-01-02T00:00:00",
"Amount": 100.0,
"RowNumber": 1
},
{
"OrderId": 3,
"CustomerId": 200,
"OrderDate": "2023-01-04T00:00:00",
"Amount": 300.0,
"RowNumber": 2
}
]