C#中五个序列聚合运算(Sum, Average, Min, Max,Aggregate)

有一段时间不写博文了,是自己不学习了么,怪不得感觉自己寂寞空虚冷了呢。。。偷笑


今天看了一篇文章,心想还有这么简便的方法,呵呵,以后不用再foreach了,又可以偷懒了。。。。大笑


Enumerable 静态类的LINQ扩展方法可以做到这一点 。就像之前大多数的LINQ扩展方法一样,这些是基于IEnumerable <TSource>序列的操作。


所以得做引用:  System.Linq;


Sum  -  返回序列的总和

            源类型必须是以下类型之一: int,float, long,double,decimalsingle 或这些类型的可空变种(int?,float?, long?, double?…) 


private float[] num = new float[]{25.2f,41,30,12,14};

float sum = num.Sum();  // sum = 122.2


还要注意的是,你可以操作上面这些类型允许Null 的可空值变种。但用SUM()时我们不用担心,因为所有的空值在求和时都排除了 :

在.NET环境中使用LINQ进行数据库查询时,合理利用并行处理可以显著提升性能,尤其是在处理大量数据时。为了解决如何并行执行多个SumAverage聚合操作的问题,我们推荐的文章《使用LINQ高效计算多个Sum的方法》将提供深入的见解和具体的实现策略。 参考资源链接:[使用LINQ高效计算多个Sum的方法](https://wenku.youkuaiyun.com/doc/t4ycj93h2y?spm=1055.2569.3001.10343) 并行处理在数据库查询中通常涉及到任务的并发执行,减少等待时间和资源竞争,从而提升整体性能。在LINQ查询中,并行性并不总是显式的,因为LINQ to Entities查询会转换为数据库查询,而数据库本身可能支持并行执行。但是,我们可以通过合理设计查询逻辑,利用数据库的并行处理能力。 实现并行执行多个聚合操作,一种常见的方法是在应用层面上手动分割数据集,然后并发地对每个子集执行聚合操作,最后合并结果。然而,在LINQ to Entities中,这种并行通常是抽象化的,通过优化的SQL查询来实现。 例如,在Entity Framework中,可以通过使用`AsParallel()`和`AsOrdered()`方法来启用并行查询。这样,LINQ查询会被转换成并行的PLINQ(并行LINQ)查询,但需要注意的是,并行执行并不总是带来性能提升,特别是在数据量较小或者单线程已经足够快的情况下。并行执行可能还会带来额外的内存消耗,因此需要根据实际情况仔细评估。 下面是一个简单的示例,展示如何使用PLINQ并行执行聚合操作: ```csharp var parallelQuery = context.TALBE_AAA.AsParallel() .AsOrdered() .Select(t => new { SA = t.A, SB = t.B, AC = t.C }) .Aggregate( () => new { SA = 0, SB = 0, AC = 0.0 }, (acc, t) => new { SA = acc.SA + t.SA, SB = acc.SB + t.SB, AC = acc.AC + t.AC }, acc => new { SA = acc.SA, SB = acc.SB, AC = acc.AC / context.TALBE_AAA.Count() // Assuming we want an average } ); ``` 在这个示例中,我们首先将数据集转换为并行查询,然后执行聚合操作。需要注意的是,并行查询通常返回的结果顺序是不确定的,因此如果顺序重要,需要在最后对结果进行排序。 根据你的需求,可能会有更复杂的方法来优化LINQ查询的性能,例如针对数据库特定的并行处理特性进行调优。建议在实施任何优化之前,先详细分析应用程序的性能瓶颈,并使用适当的性能分析工具来监控并行处理的影响。 在深入实践并行处理之后,你可以通过阅读更多相关资料,如《使用LINQ高效计算多个Sum的方法》,来扩展你对LINQ查询和数据库查询优化的理解,特别是关于如何利用LINQ进行高效的数据聚合操作。 参考资源链接:[使用LINQ高效计算多个Sum的方法](https://wenku.youkuaiyun.com/doc/t4ycj93h2y?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值