news 2026/2/10 3:00:35

<span class=“js_title_inner“>在 VB.NET 中,LINQ如何统计列表类型“List(Of String())”</span>

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
<span class=“js_title_inner“>在 VB.NET 中,LINQ如何统计列表类型“List(Of String())”</span>

LINQ(Language Integrated Query) 是一种强大而直观的查询语言,集成于 .NET 语言中,用于对集合、数组、数据库、XML 等数据源进行查询和操作。在统计分析场景中,LINQ 提供了丰富的聚合函数(如 Count、Sum、Average、Min、Max、GroupBy 等),可以快速完成常见的统计任务

'下面以一个例子 List(Of String()) 跟大家一起学习如何用Linq进行统计Dim list As New List(Of String()) From { {"A", "85","90"}, {"A", "78","92"}, {"B", "81","94"}, {"B", "80","49"},}

你提供的List(Of String())结构虽然以字符串形式存储了“类别”和“数值”,但通过LINQ配合适当的类型转换(如Integer.ParseCInt),可以非常方便地进行分组、计数、求和、平均值等统计操作。


📌 数据结构说明

你的数据:

Dim list As New List(Of String()) From { {"A", "85", "90"}, {"A", "78", "92"}, {"B", "81", "94"}, {"B", "80", "49"}}
  • 第 0 列:分组键(如班级 "A"、"B")

  • 第 1 列:成绩1(字符串形式)

  • 第 2 列:成绩2(字符串形式)


✅ 常见 LINQ 统计操作示例(VB.NET)

⚠️ 注意:为安全起见,建议先过滤掉无效或空值。这里假设数据格式正确。


1.按第0列分组,并计算每组记录数(Count)

Dim groupCounts = From row In list Group By Key = row(0) Into Group Select New With { .GroupKey = Key, .Count = Group.Count() }For Each g In groupCounts Console.WriteLine($"组 {g.GroupKey}: {g.Count} 条记录")Next' 输出:' 组 A: 2 条记录' 组 B: 2 条记录

2.按组计算第1列(成绩1)的总分(Sum)

Dim sumScore1 = From row In list Group By Key = row(0) Into Group Select New With { .GroupKey = Key, .TotalScore1 = Group.Sum(Function(r) CInt(r(1))) }For Each g In sumScore1 Console.WriteLine($"组 {g.GroupKey} 成绩1总分: {g.TotalScore1}")Next' 输出:' 组 A 成绩1总分: 163' 组 B 成绩1总分: 161

3.按组计算第2列(成绩2)的平均分(Average)

Dim avgScore2 = From row In list Group By Key = row(0) Into Group Select New With { .GroupKey = Key, .AvgScore2 = Group.Average(Function(r) CDbl(r(2))) }For Each g In avgScore2 Console.WriteLine($"组 {g.GroupKey} 成绩2平均分: {g.AvgScore2:F2}")Next' 输出:' 组 A 成绩2平均分: 91.00' 组 B 成绩2平均分: 71.50

4.筛选出成绩2低于60的记录(Where)

Dim failed = From row In list Where CInt(row(2)) < 60 Select rowConsole.WriteLine("成绩2不及格的记录:")For Each r In failed Console.WriteLine($"[{String.Join(", ", r)}]")Next' 输出:' [B, 80, 49]

5.更复杂的:每组中成绩1 + 成绩2 的总分之和

Dim totalSumPerGroup = From row In list Group By Key = row(0) Into Group Select New With { .GroupKey = Key, .TotalCombined = Group.Sum(Function(r) CInt(r(1)) + CInt(r(2))) }For Each g In totalSumPerGroup Console.WriteLine($"组 {g.GroupKey} 总分合计: {g.TotalCombined}")Next' 输出:' 组 A 总分合计: 347 ' (85+90)+(78+92) = 175+170' 组 B 总分合计: 304 ' (81+94)+(80+49) = 175+129

🔒 安全建议:处理可能的无效数据

如果数据可能包含空值、非数字字符串等,应增加容错:

Dim safeQuery = From row In list Where row IsNot Nothing AndAlso row.Length >= 3 AndAlso Integer.TryParse(row(1), Nothing) AndAlso Integer.TryParse(row(2), Nothing) Group By Key = row(0) Into Group Select New With { .GroupKey = Key, .Avg1 = Group.Average(Function(r) CInt(r(1))), .Avg2 = Group.Average(Function(r) CInt(r(2))) }

✅ 总结

尽管你的数据是List(Of String()),只要你知道各列的含义,就可以:

  • 使用Group By按分类字段分组

  • 使用CInt/CDbl转换字符串为数值

  • 应用Sum,Average,Count,Where等 LINQ 聚合函数

这在处理 CSV 导入数据、日志解析等场景中非常常见且高效。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/9 19:11:59

<span class=“js_title_inner“>支配树算法原理及鸿蒙工具实践</span>

本文介绍了支配树&#xff08;Dominator Tree&#xff09;算法在鸿蒙系统 ArkTS 内存分析工具中的应用。为应对淘宝 App 鸿蒙版因内存溢出导致的 Crash 问题&#xff0c;作者构建了一套从客户端采集内存快照、服务端自动分析的工具链。文中对比了多种支配树构建算法&#xff08…

作者头像 李华
网站建设 2026/2/5 22:52:05

Cybersecurity AI (CAI) AI 时代的网络安全自动化框架

您好&#xff01;很高兴为您详细介绍 Cybersecurity AI (CAI) 这个项目。 根据您提供的资料&#xff0c;这是一个非常专业且前沿的网络安全开源项目。以下是对 CAI 的全面介绍和解读&#xff1a; Cybersecurity AI (CAI) 一、核心定位&#xff1a;AI 时代的网络安全自动化框…

作者头像 李华
网站建设 2026/2/9 20:59:36

【工具】Python解释器和PyCharm的安装与使用

一、Python 解释器的安装 windows系统下载链接&#xff0c;现在主流用 python3&#xff0c;小版本号随便选&#xff1a;Python Releases for Windows | Python.orghttps://www.python.org/downloads/windows/环境变量加上&#xff0c;选自定义换个安装路径&#xff1a; 安装成…

作者头像 李华