我有如下列表.
名单
试图用linq转换为;
名单
如果没有for循环我怎么能这样做.我想用linq实现这个目标.
在LINQ中没有一种方法可以做到这一点; 你将不得不自己写.尝试这样的事情:
using System;
using System.Collections.Generic;
static class MyExtensions
{
public static IEnumerable<TResult> AggregatingSelect<TItem, TAggregate, TResult>(
this IEnumerable<TItem> items,
Func<TItem, TAggregate, TAggregate> aggregator,
TAggregate initial,
Func<TItem, TAggregate, TResult> projection)
{
TAggregate aggregate = initial;
foreach (TItem item in items)
{
aggregate = aggregator(item, aggregate);
yield return projection(item, aggregate);
}
}
}
class Program
{
static void Main(string[] args)
{
var numbers = new[] { 3, 1, 4, 9 };
var result = numbers.AggregatingSelect(
(int item, int agg) => item + agg,
0,
(int item, int agg) => agg);
Console.WriteLine(string.Join(",", result));
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
225 次 |
| 最近记录: |