我有一个自定义类型的IEnumerable.(我是从SelectMany那里得到的)
我在IEnumerable中也有一个项目(myItem),我希望IEnumerable中的上一个和下一个项目.
目前,我正在做这样的想法:
var previousItem = myIEnumerable.Reverse().SkipWhile(
i => i.UniqueObjectID != myItem.UniqueObjectID).Skip(1).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
我可以通过简单地省略来获得下一个项目.Reverse
.
或者,我可以:
int index = myIEnumerable.ToList().FindIndex(
i => i.UniqueObjectID == myItem.UniqueObjectID)
Run Code Online (Sandbox Code Playgroud)
然后.ElementAt(index +/- 1)
用来获取上一个或下一个项目.
"更好"包括性能(内存和速度)和可读性的组合; 可读性是我的主要关注点.