LINQ: Add RowNumber Column

前端 未结 9 1090
广开言路
广开言路 2020-11-29 07:26

How can the query below be modified to include a column for row number (ie: one-based index of results)?

var myResult = from currRow in someTable
                    


        
9条回答
  •  心在旅途
    2020-11-29 08:05

    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 });
    

提交回复
热议问题