在python中,我可以轻松地在迭代时获取索引,例如

>>> letters = ['a', 'b', 'c']
>>> [(char, i) for i, char in enumerate(letters)]
[('a', 0), ('b', 1), ('c', 2)]

我如何用linq做类似的事情?

最佳答案

当然。有一个overload of Enumerable.Select ,它需要一个Func<TSource, int, TResult>来将元素及其索引一起投影:

例如:

char[] letters = new[] { 'a', 'b', 'c' };
var enumerate = letters.Select((c, i) => new { Char = c, Index = i });
foreach (var result in enumerate) {
    Console.WriteLine(
        String.Format("Char = {0}, Index = {1}", result.Char, result.Index)
    );
}

输出:
Char = a, Index = 0
Char = b, Index = 1
Char = c, Index = 2

关于.net - 是否有类似于linq的python枚举的内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2194684/

10-11 15:22
查看更多