using System.Collections.Generic;
public static void Main()
var fakeRows = new List<Row>
CellValues = new List<TableCellValue>
new TableCellValue { Id = 5, Value = "Value 5" },
new TableCellValue { Id = 20, Value = "Value for 20" },
new TableCellValue { Id = 10, Value = "Value for 10" }
CellValues = new List<TableCellValue>
new TableCellValue { Id = 5, Value = "Value 5" },
new TableCellValue { Id = 20, Value = "Value for 20" },
new TableCellValue { Id = 10, Value = "Value for 10" }
CellValues = new List<TableCellValue>
new TableCellValue { Id = 5, Value = "Value 5" },
new TableCellValue { Id = 20, Value = "Value for 20" },
new TableCellValue { Id = 10, Value = "Value for 10" }
var desiredColumnOrder = new[] { 10, 20 , 5 };
foreach(var columnId in desiredColumnOrder) {
Console.Write("Column #" + columnId + "\t\t");
foreach(var row in fakeRows) {
foreach(var tableCellValue in row.CellValues.OrderBy(x => x.Id)) {
Console.Write("" + tableCellValue.Value + "\t\t");
public List<TableCellValue> CellValues { get; set; }
public class TableCellValue
public int Id { get; set; }
public string Value { get; set; }