Bueno, una traducción directa sería:
var m = Enumerable.Range(1, A.Count - 1)
.Select(i => A[i] + A[i - 1])
.ToList();
sino también en cuenta:
var m = A.Skip(1)
.Zip(A, (curr, prev) => curr + prev)
.ToList();
O mediante la extensión de Jon Skeet here:
var m = A.SelectWithPrevious((prev, curr) => prev + curr)
.ToList();
Pero, como señala Jason Evans en un comentario, esto no ayuda mucho con la legibilidad o la brevedad, contra idering su código existente es perfectamente comprensible (y corto) y desea materializar todo de los resultados en una lista de todos modos.
No hay nada realmente mal con:
var sumsOfConsecutives = new List<int>();
for(int i = 1; i < A.Count; i++)
sumsOfConsecutives.Add(A[i] + A[i - 1]);
No hay nada malo con su pregunta, pero ¿por qué no solo usa un bucle 'for'? Cambiar lo anterior a LINQ probablemente no gane nada. –
Me gusta saber cómo hacer esto usando linQ así que solo – ratty
No escribe en mayúscula la Q en LINQ, todas las letras son parte del acrónimo, no solo la Q :) – RichK