使用LINQ在IEnumerable中获取上一个和下一个项目
- 论坛
- 使用LINQ在IEnumerable中获取上一个和下一个项目
14 浏览
使用LINQ在IEnumerable中获取上一个和下一个项目
我有一个IEnumerable的自定义类型。(我从SelectMany中获得)
我还有一个在该IEnumerable中的项目(myItem),我希望从该IEnumerable中获取前一个和后一个项目。
目前,我正在这样做:
var previousItem = myIEnumerable.Reverse().SkipWhile( i => i.UniqueObjectID != myItem.UniqueObjectID).Skip(1).FirstOrDefault();
我可以通过简单地省略.Reverse
来获取下一个项目。
或者,我可以:
int index = myIEnumerable.ToList().FindIndex( i => i.UniqueObjectID == myItem.UniqueObjectID)
然后使用.ElementAt(index +/- 1)
来获取前一个或后一个项目。
- 这两种选项哪个更好?
- 是否有更好的选择?
“更好”包括性能(内存和速度)和可读性的综合考虑;可读性是我的主要关注点。