栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

LINQ聚合算法介绍

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LINQ聚合算法介绍

最容易理解的定义

Aggregate
是,它考虑到之前进行的操作,对列表的每个元素执行操作。也就是说,它在第一个和第二个元素上执行操作并将结果转发。然后,它对先前的结果和第三个元素进行运算并继续进行。等等

例子1.求和

var nums = new[]{1,2,3,4};var sum = nums.Aggregate( (a,b) => a + b);Console.WriteLine(sum); // output: 10 (1+2+3+4)

这增加

1
2
使
3
。然后添加
3
(上一个的结果)和
3
(顺序的下一个元素)来制作
6
。然后添加
6
4
制作
10

例子2.从一个字符串数组创建一个csv

var chars = new []{"a","b","c", "d"};var csv = chars.Aggregate( (a,b) => a + ',' + b);Console.WriteLine(csv); // Output a,b,c,d

运作方式大致相同。连接

a
一个逗号并
b
进行
a,b
。然后
a,b
以逗号连接并
c
进行运算
a,b,c
。等等。

例子3.使用种子乘数字

为了完整起见,

Aggregate
其中的重载带有种子值。

var multipliers = new []{10,20,30,40};var multiplied = multipliers.Aggregate(5, (a,b) => a * b);Console.WriteLine(multiplied); //Output 1200000 ((((5*10)*20)*30)*40)

与上述示例非常相似,此操作以值开头,

5
并将其乘以
10
结果为的序列的第一个元素
50
。将该结果结转并乘以序列中的下一个数字,得出
20
结果
1000
。这将继续执行序列的其余2个元素。

实时示例:http
//rextester.com/ZXZ64749文档:http :
//msdn.microsoft.com/en-
us/library/bb548651.aspx


附录

上面的示例2使用字符串连接来创建用逗号分隔的值列表。这是一种简单的方式来说明

Aggregate
此答案的目的,以供使用。但是,如果使用此技术实际创建大量逗号分隔的数据,则使用a会更合适
StringBuilder
,并且这与
Aggregate
使用种子重载来启动完全兼容
StringBuilder

var chars = new []{"a","b","c", "d"};var csv = chars.Aggregate(new StringBuilder(), (a,b) => {    if(a.Length>0)        a.Append(",");    a.Append(b);    return a;});Console.WriteLine(csv);

更新的示例:http :
//rextester.com/YZCVXV6464



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/470775.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号