在c#中使用LINQ自动增加泛型列表

本文关键字:增加 泛型 列表 LINQ | 更新日期: 2023-09-27 18:11:10

在使用LINQ投影项目时,是否有一种很好的方法来提供"自动增量"样式的索引列(从1..x) ?

作为一个基本的例子,我正在寻找下面的索引列从1到列表中的项数。

var items = from s1 in list
    select new BrowsingSessionItemModel { Id = s1.Id, Index = 0 };

遍历列表将是一个简单的选择,但我想知道是否有更好的方法来做到这一点?

在c#中使用LINQ自动增加泛型列表

对于LINQ表达式不能这样做。您可以使用以下.Select扩展方法:

var items = list.Select((x, index) => new BrowsingSessionItemModel { 
    Id = x.Id, 
    Index = index 
});

您可以使用Select的重载,它也提供了投影的索引:

var items = list.Select((value, index) => new BrowsingSessionItemModel { 
                                                Id = value.Id,
                                                Index = index
                                          });

注意,没有查询表达式支持这种重载。如果您实际上是从数据库中获取值(尚不清楚list是否真的是List<T>),您可能应该确保您有适当的排序,否则结果有些武断。