如何使用LINQ.Where用于特定索引

KOP*_*EUE -1 c# linq arrays expression conditional-statements

正如标题所说,我需要一个LINQ表达式,它只会检查数组的少数索引.我现在有这样的:

int[] a = b.Where(c => c % 4 == (int)Cards.CardSuits.Club).ToArray();
Run Code Online (Sandbox Code Playgroud)

那些不是我的实际变量名称我只是做了一点点.我只需要检查b[2]一下b[b.length-1]

Jon*_*eet 7

如果要在谓词中使用索引而不是值,请使用其重载Where接受检查值/索引对的谓词:

int[] a = b.Where((value, index) => index % 4 == (int) Cards.CardSuits.Club)
           .ToArray();
Run Code Online (Sandbox Code Playgroud)

(我强烈建议你模卡不同,但-考虑或是结构或与类SuitRank.属性然后你可以检查是否套装是俱乐部参与了很多更自然的方式...)


如果你真的想保留现有的过滤器,但只是忽略源的前两个元素,你可能想要Skip:

int[] a = b.Skip(2)
           .Where(c => c % 4 == (int) Cards.CardSuits.Club)
           .ToArray();
Run Code Online (Sandbox Code Playgroud)