满足给定条件的元素索引

Nar*_*esh 3 c# linq list

我正在寻找一个linq表达式,它是FindIndex方法的扩展.它只返回第一个索引.我希望列表中的所有索引满足条件.

例如:

var indx = myList.FindIndex(x => (x <= -Math.PI / 3) || (x >= Math.PI / 3));
Run Code Online (Sandbox Code Playgroud)

Tim*_*ter 9

然后你需要使用LINQ,因为List.FindIndex只返回第一个.您可以使用重载Enumerable.Select来提供序列中项目的索引以创建匿名类型.

IEnumerable<int> allIndices = myList
    .Select((item, index) => new { item, index })
    .Where(x => (x.item <= -Math.PI / 3) || (x.item >= Math.PI / 3))
    .Select(x => x.index);
Run Code Online (Sandbox Code Playgroud)

  • svick - 一旦你应用了Where()的重载,那不会改变索引吗? (2认同)