相关疑难解决方法(0)

使用LINQ获取IEnumerable中的上一个和下一个项目

我有一个自定义类型的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)用来获取上一个或下一个项目.

  1. 哪两个选项更好?
  2. 有没有更好的选择?

"更好"包括性能(内存和速度)和可读性的组合; 可读性是我的主要关注点.

c# linq ienumerable

32
推荐指数
3
解决办法
4万
查看次数

标签 统计

c# ×1

ienumerable ×1

linq ×1