C# 如何对特定索引使用LINQ.Where

C# 如何对特定索引使用LINQ.Where,c#,arrays,linq,expression,conditional-statements,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]如果要在谓词中使用索引而不是值,请使用Where的重载,它接受检查值/索引对的谓词: int[] a = b.Where((value, index) => index

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

int[] a = b.Where(c => c % 4 == (int)Cards.CardSuits.Club).ToArray();
这些不是我真正的变量名,我只是把它缩短了一点。
我只需要检查b[2]到b[b.length-1]

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

int[] a = b.Where((value, index) => index % 4 == (int) Cards.CardSuits.Club)
           .ToArray();
<>我强烈建议您使用不同的模型卡——考虑一个结构或一个具有合适和排序属性的类。然后你可以用更自然的方式检查这套衣服是否合适

如果您确实希望保留现有筛选器,但忽略源的前两个元素,则可能需要跳过:


您说只需要将b[1]检查到b[b.length-1],所以您只是跳过了第一个[0]元素,对吗?为此,请执行以下操作:

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

如果b的值为51-36 int[]a=b。其中,index=>index%4==intCards.CardSuits.Club.ToArray;当int[]a=b时,值为51和36。其中c=>c%4==intCards.CardSuits.Club.ToArray;有36个值为什么?是不是因为我们在分割索引而不是值?@KOPEUE:第一个是处理源中条目的索引,而后者是处理条目的值。请注意,您没有告诉我们数组中有什么,或者您希望得到什么结果,这使得帮助您变得更加困难。我没有看到谓词函数中使用值。有什么遗漏吗?@ubi:no,因为问题的标题是如何使用LINQ.Where作为特定的索引-我认为这意味着OP希望通过索引而不是值进行过滤。现在已经为问题的不同解释添加了答案…int[]a=b。Wherevalue,index=>index>=2&&value%4==intCards.CardSuits.Club.ToArray;这一个也适用于我使用我需要的值但你是对的我没有提到它我不明白你在最后一句话中的意思-我的回答只是提供了一个检查每个条目索引的示例。如果这不符合您的要求,请提供一个。
b.Skip(1).Where(...)