是否有使用LINQ投影項目時提供一個「自動遞增」式的索引列(從1..X)的好辦法?自動增加在C#中使用LINQ泛型列表
作爲一個基本的例子,我在尋找索引列的下方,從1到列表中的項目數。
var items = from s1 in list
select new BrowsingSessionItemModel { Id = s1.Id, Index = 0 };
遍歷列表將是簡單的選擇,但我想知道是否有更好的方法來做到這一點?
是否有使用LINQ投影項目時提供一個「自動遞增」式的索引列(從1..X)的好辦法?自動增加在C#中使用LINQ泛型列表
作爲一個基本的例子,我在尋找索引列的下方,從1到列表中的項目數。
var items = from s1 in list
select new BrowsingSessionItemModel { Id = s1.Id, Index = 0 };
遍歷列表將是簡單的選擇,但我想知道是否有更好的方法來做到這一點?
可以使用overload of Select
更是把提供索引到投影以及:
var items = list.Select((value, index) => new BrowsingSessionItemModel {
Id = value.Id,
Index = index
});
注意,不存在用於查詢表達式的支持這個過載。如果你實際上是從數據庫中獲取的值(現在還不清楚是否list
真的是List<T>
),你應該確保你有適當的排序,否則的結果是有點武斷。
一般情況下,你可以生成一個新的使用Enumerable.Range(1,numOfItems)遞增枚舉,但在你的情況下,使用選擇超載是您需要的更好的選擇。 –