Конечно, это довольно легко:
var index = list.Select((value, index) => new { value, index = index + 1 })
.Where(pair => SomeCondition(pair.value))
.Select(pair => pair.index)
.FirstOrDefault() - 1;
Это вернет индекс, если он найдет что-то подходящее, или -1 в противном случае. +1 и -1 - это поведение для случая, когда совпадений нет. Если бы вы знали, что всегда будет матч, было бы проще:
var index = list.Select((value, index) => new { value, index })
.Where(pair => SomeCondition(pair.value))
.Select(pair => pair.index)
.FirstOrDefault();
Если вы счастливы, чтобы получить остальную часть списка с этого момента и далее, SkipWhile
, безусловно, ваш друг, как уже упоминалось, Chris , Если хотят, остальную часть списка и оригинального индекс, это тоже легко:
var query = list.Select((value, index) => new { value, index })
.SkipWhile(pair => !SomeCondition(pair.value))
Это даст вам последовательность { value, index }
пара из первого значения, соответствующего SomeCondition
.
+1 за то, что он, вероятно, хочет использовать 'SkipWhile', потому что поиск индекса, а затем вызов' Skip' дважды перечисляет запрос – Gabe
Так близко ... теперь я хочу использовать SkipWhile в сочетании с счетчиком, то есть списком. SkipWhile (myBusinessLogicCondition && list.Count - SkipIndex> someXnumber); – user494352
user494352: Кажется, что вы хотите посмотреть на список Jon.Select(). SkipWhile() 'ответ в конце своего сообщения. – Gabe