Linq指数问题

时间:2011-08-26 12:51:31

标签: c# linq

我可以用索引

编写这样的代码吗?
var someArray = new List<int>(){1,2,3,4,5};
var resultArray = someArray.Where((num, index) => index % 2 == 0);

var resultArray = from num in someArray...

3 个答案:

答案 0 :(得分:3)

我想你是在问“我可以使用查询表达式语法来获取提供项目索引的Where的重载,我可以使用流利的方式方法链语法“。

答案是否定的。

the no-index-parameter overload of Where的文档中所示:

  

在查询表达式语法中,where子句转换为Where<TSource>(IEnumerable<TSource>, Func<TSource, Boolean>)的调用。

答案 1 :(得分:2)

不,你不能。 Where扩展方法没有等效的,允许您使用LINQ语法来使用索引。

答案 2 :(得分:1)

唯一的方法似乎是解决这个问题:

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

使用其他语法可能更好。