如何使用Linq更新List
中所有对象的Id
属性,使其具有序列号?
预期结果为BookList
,其中所有BookDetail
的Id
为1到3。
public class BookDetail
{
public int Id { get; set; }
public string Title { get; set; }
}
List<BookDetail> BookList = new List<BookDetail>
{
new BookDetail{Id = 0, Title = "Aaa"},
new BookDetail{Id = 0, Title = "Bbb"},
new BookDetail{Id = 0, Title = "Ccc"}
};
字符串
2条答案
按热度按时间jbose2ul1#
Linq是用来查询的,不是用来更新的。如果在查询中包含item索引,你可以 * 使用linq来投影到一个 new 的新对象列表:
字符串
但这不仅创建了一个新的 list,还在list中创建了新的 objects,有效地使内存使用量增加了一倍。
如果你想修改列表的内容,只需使用
for
循环来轻松获取索引:型
可以使用
ForEach
*,但它不支持索引参数,因此您必须创建自己的变量并在ForEach
中递增它。另外,关于ForEach
与传统foreach
循环的有用性存在争议(您还必须在foreach
中创建索引变量)。我很感激你想用它来“学习Linq”,但是学习如何使用工具的一部分是学习 * 什么时候不应该使用工具 *。
iugsix8n2#
您可以使用
All
来设置每个项目的id。字符串
ForEach
是另一个选项,但仅适用于List
。如果你有一个
Enumerable
,不想/不需要转换成List
,那么这是可用的linq方法。至于使用
for
或foreach
循环,两者都不是linq,因此被排除在外。