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;