У меня есть IEnumerable настраиваемого типа. (Что я получил от SelectMany)
У меня также есть элемент (myItem) в этом IEnumerable, который мне нужен предыдущий и следующий элемент из 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)
, чтобы получить предыдущий или следующий элемент.
- Что лучше между двумя вариантами?
- Есть ли еще лучший вариант?
"Лучше" включает в себя сочетание производительности (памяти и скорости) и читаемости; с читабельностью, являющейся моей главной задачей.