我正在寻找一个linq表达式,它是FindIndex方法的扩展.它只返回第一个索引.我希望列表中的所有索引满足条件.
例如:
var indx = myList.FindIndex(x => (x <= -Math.PI / 3) || (x >= Math.PI / 3));
Run Code Online (Sandbox Code Playgroud)
然后你需要使用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)