LINQ: Add RowNumber Column

Use the method-syntax where Enumerable.Select has an overload with the index:

var myResult = someTable.Select((r, i) => new { Row = r, Index = i })
    .Where(x => x.Row.someCategory == someCategoryValue)
    .OrderByDescending(x => x.Row.createdDate);

Note that this approach presumes that you want the original index of the row in the table and not in the filtered result since i select the index before i filter with Where.

EDIT: I’m looking for the results to be {idx, col1, col2…col-n} not
{idx, row}. The row number should correspond to result rows not
the table rows.

Then select the anonymous type with all columns you need:

var myResult = someTable.Where(r => r.someCategory == someCategoryValue)
        .OrderByDescending(r => r.createdDate)
        .Select((r, i) => new { idx = i, col1 = r.col1, col2 = r.col2, ...col-n = r.ColN });

Leave a Comment