我很难通过以下示例切换到 LINQ:
int[] inputs = { 5, 3, 5, 66, 4, 5 };
int[] indexes; // I want to have the indexes of '5's in
// the inputs array, which is { 0, 2, 5 }
// My way (traditional for loop)
List<int> indexesList = new List<int>();
for (int i = 0; i < inputs.Length; i++)
if (inputs[i] == 5)
indexesList.Add(i);
indexes = indexesList.ToArray();
// LINQ way
var indexes = inputs.Select((s, i) => new { i, s })
.Where(t => t.s == 5)
.Select(t => t.i).ToArray();
问题 1.在效率(速度、内存使用)方面,如果我将代码转换为 LINQ,我会有什么优势吗?
问题 2.如果属实,是否有更优雅的方式来使用 LINQ?
PS:注意,这个方法在我的实际项目中调用非常频繁。因此,在速度或内存使用方面稍有改进将对整个过程有很大帮助。