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

时间:2016-03-07 22:10:19

标签: c# arrays linq expression conditional-statements

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

int[] a = b.Where(c => c % 4 == (int)Cards.CardSuits.Club).ToArray();

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

2 个答案:

答案 0 :(得分:7)

如果要在谓词中使用索引而不是值,请使用#include "CmdHelp.h" #include <iostream> #include <string> using namespace std; CmdHelp::CmdHelp() { setLabel("HELP"); setUsage("/help"); setDescription("Shows the help screen!"); cmds.push_back((Command) *this); } void CmdHelp::run() { cout << cmds[0].getLabel() << endl; } 的重载,该重载接受检查值/索引对的谓词:

Where

(我强烈建议您使用不同的模型卡 - 考虑结构或具有int[] a = b.Where((value, index) => index % 4 == (int) Cards.CardSuits.Club) .ToArray(); Suit属性的类。然后您可以检查该套装是否是中的球杆很多更自然的方式......)

如果实际上希望保留现有的过滤器,但忽略源的前两个元素,则可能需要Rank

Skip

答案 1 :(得分:1)

你说你只需要检查b [1]到b [b.length-1],所以你只是跳过第一个(“[0]”)元素,对吧?为此,请做到这一点:

b.Skip(1).Where(...)