我有一个对象列表(即整数),我想使用 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 实现,还是我需要创建自己的聚合机制?
提前致谢,克里斯蒂安
最佳答案
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());
或者在一行中
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());
关于c# - 使用 LINQ 聚合子列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21829014/