跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
C Sharp LINQ 聚合
”︁(章节)
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
= C# LINQ聚合 = '''LINQ聚合(Aggregation)'''是C#语言集成查询(LINQ)中的一组强大操作,用于对数据序列执行计算并返回单个结果。这些操作包括求和、平均值、最大值、最小值、计数等,以及更复杂的自定义聚合。聚合操作是数据处理中的核心功能,特别适用于统计分析和数据汇总场景。 == 基础聚合操作 == LINQ提供了一系列内置聚合方法,这些方法可以直接应用于实现了<code>IEnumerable<T></code>接口的集合。 === 常用聚合方法 === * <code>Count()</code> - 计算序列中元素的数量 * <code>Sum()</code> - 计算数值序列的总和 * <code>Average()</code> - 计算数值序列的平均值 * <code>Max()</code> - 查找序列中的最大值 * <code>Min()</code> - 查找序列中的最小值 * <code>Aggregate()</code> - 执行自定义聚合操作 === 代码示例 === 以下示例展示基本聚合操作: <syntaxhighlight lang="csharp"> int[] numbers = { 1, 2, 3, 4, 5 }; // 计数 int count = numbers.Count(); // 返回5 // 求和 int sum = numbers.Sum(); // 返回15 // 平均值 double average = numbers.Average(); // 返回3 // 最大值 int max = numbers.Max(); // 返回5 // 最小值 int min = numbers.Min(); // 返回1 </syntaxhighlight> == 高级聚合:Aggregate方法 == <code>Aggregate()</code>方法是LINQ中最灵活的聚合操作,允许开发者定义自己的聚合逻辑。其基本形式为: <math>TResult Aggregate<TSource, TResult>(IEnumerable<TSource> source, TResult seed, Func<TResult, TSource, TResult> func)</math> === Aggregate工作原理 === 1. 接受一个初始值(种子) 2. 对序列中的每个元素应用聚合函数 3. 返回最终聚合结果 <mermaid> graph LR A[初始值/种子] --> B[第一个元素] B --> C[第一个结果] C --> D[第二个元素] D --> E[第二个结果] E --> F[...] F --> G[最终结果] </mermaid> === 代码示例 === 计算数字乘积: <syntaxhighlight lang="csharp"> int[] numbers = { 1, 2, 3, 4, 5 }; // 使用Aggregate计算乘积 int product = numbers.Aggregate(1, (acc, num) => acc * num); // 分解步骤: // 初始值: 1 // 1 * 1 = 1 // 1 * 2 = 2 // 2 * 3 = 6 // 6 * 4 = 24 // 24 * 5 = 120 // 最终结果: 120 </syntaxhighlight> 字符串连接示例: <syntaxhighlight lang="csharp"> string[] words = { "Hello", "World", "LINQ", "Aggregation" }; string combined = words.Aggregate((current, next) => current + " " + next); // 结果: "Hello World LINQ Aggregation" </syntaxhighlight> == 实际应用案例 == === 案例1:电商订单统计 === 假设有一个订单列表,我们需要计算总销售额、平均订单金额和最大订单金额: <syntaxhighlight lang="csharp"> public class Order { public int OrderId { get; set; } public decimal Amount { get; set; } } List<Order> orders = new List<Order> { new Order { OrderId = 1, Amount = 100.50m }, new Order { OrderId = 2, Amount = 75.25m }, new Order { OrderId = 3, Amount = 150.00m } }; // 总销售额 decimal totalSales = orders.Sum(o => o.Amount); // 平均订单金额 decimal averageOrder = orders.Average(o => o.Amount); // 最大订单金额 decimal maxOrder = orders.Max(o => o.Amount); </syntaxhighlight> === 案例2:学生成绩分析 === 分析学生成绩数据,找出最高分、最低分和平均分: <syntaxhighlight lang="csharp"> var studentScores = new[] { new { Name = "Alice", Score = 85 }, new { Name = "Bob", Score = 92 }, new { Name = "Charlie", Score = 78 } }; var analysis = new { HighestScore = studentScores.Max(s => s.Score), LowestScore = studentScores.Min(s => s.Score), AverageScore = studentScores.Average(s => s.Score) }; </syntaxhighlight> == 性能考虑 == * 聚合操作通常是延迟执行的(除了返回标量值的方法) * 对于大型数据集,考虑使用并行LINQ(PLINQ)来提高性能 * 复杂的自定义聚合可能影响性能,应进行测试 == 总结 == LINQ聚合操作提供了强大的数据汇总和分析能力: * 内置聚合方法简单易用 * <code>Aggregate()</code>方法支持复杂自定义逻辑 * 适用于各种数据统计和分析场景 * 可以与LINQ的其他操作(如Where、Select等)组合使用 掌握LINQ聚合操作可以显著提高数据处理效率和代码可读性,是C#开发者必备的技能之一。 [[Category:编程语言]] [[Category:C Sharp]] [[Category:C Sharp LINQ]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)