You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用LINQ为List中所有对象的Id属性设置连续序号

如何用LINQ为List中所有BookDetail对象设置连续Id(1到3)

首先需要明确:LINQ的核心设计是查询数据而非直接修改原有集合,但我们可以结合LINQ的索引功能来实现需求,主要有两种常见方式:

方式一:创建新的List(不修改原对象)

利用Select方法的重载版本,它会提供每个元素的索引(从0开始),我们可以基于索引生成新的BookDetail对象:

var updatedBookList = BookList.Select((book, index) => new BookDetail
{
    Id = index + 1, // 索引从0开始,加1得到1、2、3
    Title = book.Title
}).ToList();

这种方式不会改变原BookList中的对象,而是生成一个全新的集合,适合不需要保留原对象引用的场景。

方式二:修改原List中的对象(原地更新)

如果需要直接修改原有集合里的对象,可以结合Enumerable.Range和索引来遍历更新:

Enumerable.Range(0, BookList.Count).ToList().ForEach(i => 
{
    BookList[i].Id = i + 1;
});

或者用更直观的遍历方式(结合LINQ索引特性):

foreach (var (book, index) in BookList.Select((b, i) => (b, i)))
{
    book.Id = index + 1;
}

这两种方式都会直接修改原BookList中每个BookDetail对象的Id属性,最终得到预期的1、2、3连续序号。

验证结果

执行上述任意一种方式后,输出BookList的Id值:

foreach (var book in BookList)
{
    Console.WriteLine(book.Id); // 依次输出1、2、3
}

内容的提问来源于stack exchange,提问作者Megrez7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 09:12:07