我有一个项目列表
row_id,Items
12134,第X项
13243,项目Y
是否可以在c#中基于列表项自动生成row_id?因此,而不是具有12134和13243,列表的输出将类似于
row_id,Items
1,第X项
2,项目Y
答案 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。