使用LINQ聚合子列表

Gre*_*eny 1 c# linq

我有一个对象列表(即整数),我想用LINQ聚合子列表.

例如:

原始清单: [ 1, 4, 5, 3, 4, 10, 4, 12 ]

子列表: [ [1,4,5,3], [4,5,3,4], [5,3,4,10], [3,4,10,4], [4,10,4,12] ]

结果(汇总清单): [ 5, 5, 10, 10, 12 ]

我想为包含自身和以下n = 3元素的每个元素创建最大子列表.这是LINQ的可能吗?还是我需要创建自己的聚合机制?

提前谢谢,克里斯蒂安

Ars*_*yan 6

public IEnumerable<IEnumerable<int>> GetSubLists(int[] collection)
{
   for(int i = 0; i< collection.Length - 3; i++)
       yield return collection.Skip(i).Take(4);
}

GetSubLists(original).Select(l => l.Max());
Run Code Online (Sandbox Code Playgroud)

或者在一行中

int[] original = {1, 4, 5, 3, 4, 10, 4, 12 };
int chunkCount = 4;
Enumerable.Range(0, original.Length - chunkCount + 1).Select(i => original.Skip(i).Take(chunkCount))
 .Select(l => l.Max());
Run Code Online (Sandbox Code Playgroud)