使用count c#按列表排序

时间:2017-02-13 12:43:37

标签: c#

我有一个项目列表

  

row_id,Items

     

12134,第X项

     

13243,项目Y

是否可以在c#中基于列表项自动生成row_id?因此,而不是具有12134和13243,列表的输出将类似于

  

row_id,Items

     

1,第X项

     

2,项目Y

4 个答案:

答案 0 :(得分:3)

var source = new List<Item> {new Item(12134, "Item X"), new Item(13243, "Item Y")};
var dest = source.OrderBy(item => item.row_id).Select((item, index) => new Item(index + 1, item.Items)).ToList();

答案 1 :(得分:2)

您可以使用Select覆盖(index, item)对,将列表项与其列表位置配对:

var itemsWithIndex = myList
    // If you would like to change the order of auto-generated IDs,
    // change the expression inside OrderBy; This step is optional.
    .OrderBy(item => <some-expression>)
    .Select((item, index) => new { Item=item, NewId=index+1});

现在您可以根据需要使用项目索引:显示它,将其设置回项目,依此类推:

foreach (var pair in itemsWithIndex) {
    Console.WriteLine("{0} : {1}", pair.Index, pair.Item.Items);
}

答案 2 :(得分:0)

您可以对列表进行排序,遍历项目并设置每个项目的ID。

答案 3 :(得分:0)

 for(int i = 0; i < items.Count; i++)
    {
        items[i].RowId = i + 1;
    }

这假设您的商品有一个名为RowId的属性。这更简单,不需要使用您可能不理解的LINQ。