使用LINQ清除匹配条件的数组索引的方法

Ste*_*eve 2 c# linq

我想从满足条件的数组中返回所有索引.我想出来了

myarray
   .Select((p,i) => 
       {              
          if (SomeCondition(p)) return i; 
          else return -1;
       })
   .Where(p => p != -1);
Run Code Online (Sandbox Code Playgroud)

我知道我可以编写一个扩展方法或者用循环来编写它,但我想知道LINQ中是否内置了一些我不熟悉的东西.如果这是微不足道的道歉

Kir*_*oll 8

就个人而言,我会这样做:

myarray
    .Select((p, i) => new { Item = p, Index = i })
    .Where(p => SomeCondition(p.Item))
    .Select(p => p.Index);
Run Code Online (Sandbox Code Playgroud)


Hen*_*man 5

当我阅读问题的文本而不是样本时:

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吗?