C# Linq索引问题

C# Linq索引问题,c#,linq,C#,Linq,我可以用索引编写这样的代码吗 var someArray = new List<int>(){1,2,3,4,5}; var resultArray = someArray.Where((num, index) => index % 2 == 0); 不,你不能。扩展方法不允许您使用LINQ语法来使用索引。我想您是在问“我是否可以使用查询表达式语法来获得提供项索引的的重载,就像我可以使用流畅的方法链接语法一样” 答案是否定的 如以下文件所示: 在查询表达式语法中,where子

我可以用索引编写这样的代码吗

var someArray = new List<int>(){1,2,3,4,5};
var resultArray = someArray.Where((num, index) => index % 2 == 0);

不,你不能。扩展方法不允许您使用LINQ语法来使用索引。

我想您是在问“我是否可以使用查询表达式语法来获得提供项索引的
的重载,就像我可以使用流畅的方法链接语法一样”

答案是否定的

如以下文件所示:

在查询表达式语法中,
where
子句转换为调用
where(IEnumerable,Func)


唯一的办法似乎是绕过这个问题:

var count = 0;
var resultArray = from num in someArray
                  let index = count++
                  where index % 2 == 0
                  select num;

使用其他语法可能更好。

您是否在问,使用查询语法是否可以使用方法语法?如果你是这样问的,那么答案是否定的。@Bala R,你是对的。谢谢你指出这一点。我已经更新了我的答案。实现
TakeEveryOther()
从某个数组中的num获取
。TakeEveryOther()选择num
。。。但正如Richard所说,只需使用其他语法即可
TakeEveryOther
只有在您经常使用它的情况下才是正确的。
var count = 0;
var resultArray = from num in someArray
                  let index = count++
                  where index % 2 == 0
                  select num;