我想从满足条件的数组中返回所有索引.我想出来了
myarray
.Select((p,i) =>
{
if (SomeCondition(p)) return i;
else return -1;
})
.Where(p => p != -1);
Run Code Online (Sandbox Code Playgroud)
我知道我可以编写一个扩展方法或者用循环来编写它,但我想知道LINQ中是否内置了一些我不熟悉的东西.如果这是微不足道的道歉
就个人而言,我会这样做:
myarray
.Select((p, i) => new { Item = p, Index = i })
.Where(p => SomeCondition(p.Item))
.Select(p => p.Index);
Run Code Online (Sandbox Code Playgroud)
当我阅读问题的文本而不是样本时:
int[] data = { 1, 2, 5, 6, };
var results = Enumerable.Range(0, data.Length).Where(i => data[i] > 2);
// results = { 2, 3 }
Run Code Online (Sandbox Code Playgroud)
你真的需要那些-1吗?