我有一个有96个值的集合.我想总结4个连续索引的值.我怎么能用Linq做到这一点?
例
collection = {100, 101, 200, 150, 103, 105, 100, 104, .........., 20, 40, 60, 80};
Run Code Online (Sandbox Code Playgroud)
总和(100, 101, 200, 150;)则总和(103, 105, 100, 104;)......然后和(20, 40, 60, 80;)这意味着现在我的新系列将有24个值.
我怎么能用Linq做到这一点?
Ser*_*rvy 11
我们可以从这个实用程序函数开始,Batch根据给定的批量大小来设置项目:
public static IEnumerable<IEnumerable<T>> Batch<T>(this IEnumerable<T> source, int batchSize)
{
List<T> buffer = new List<T>(batchSize);
foreach (T item in source)
{
buffer.Add(item);
if (buffer.Count >= batchSize)
{
yield return buffer;
buffer = new List<T>(batchSize);
}
}
if (buffer.Count > 0)
{
yield return buffer;
}
}
Run Code Online (Sandbox Code Playgroud)
之后它就像下面这样简单:
var query = data.Batch(4)
.Select(batch => batch.Sum());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3149 次 |
| 最近记录: |