LINQ: Add RowNumber Column

前端 未结 9 1075
广开言路
广开言路 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:04

    Use this Select method:

    Projects each element of a sequence into a new form by incorporating the element's index.

    Example:

    var myResult = someTable.Where(currRow => currRow.someCategory == someCategoryValue)
                            .OrderByDescending(currRow => currRow.createdDate)
                            .Select((currRow, index) => new {Row = currRow, Index = index + 1});
    

    In response to your edit:

    If you want a DataTable as result, you can go the non-Linq way by simply using a DataView and add a additional column afterwards.

    someTable.DefaultView.RowFilter = String.Format("someCategory = '{0}'", someCategoryValue);
    someTable.DefaultView.Sort = "createdDate";
    var resultTable = someTable.DefaultView.ToTable();
    resultTable.Columns.Add("Number", typeof(int));
    int i = 0;
    foreach (DataRow row in resultTable.Rows)
        row["Number"] = ++i;
    

提交回复
热议问题