vb.net - 从VB中的集合中获取唯一行
问题描述
目前,此代码获取“文件夹”列的唯一值并返回所述列。这是在VB中。
| Folder| Times
------------------------
| ABC | 3 |
| CDE | 2 |
| ACD | 2 |
| ABC | 1 |
这给了我一个新的集合,行名为 Folder。但没有列时间。
我如何修改代码,使其同时提供文件夹和时间列。但我只想检查文件夹列的唯一值。
预期结果
| Folder| Times
------------------------
| CDE | 2 |
| ACD | 2 |
Dim objUniqueValues As DataTable
Dim objSortedInput As DataTable
objUniqueValues = GetDataTable(ColumnName,"System.String")
InputCollection.DefaultView.Sort = ColumnName
objSortedInput = InputCollection.DefaultView.ToTable
Dim strValue As String
strValue = ""
Dim drInput as DataRow
For Each drInput in objSortedInput.Rows
If(strValue <> drInput(ColumnName))
strValue = drInput(ColumnName)
Dim row As DataRow = objUniqueValues.NewRow()
row(ColumnName) = strValue
objUniqueValues.Rows.Add(row)
End If
Next
UniqueValues = objUniqueValues
谢谢!
解决方案
我认为您想要的是一个仅在列表中出现一次的文件夹表以及与该文件夹关联的时间。如果此信息存储在数据库中,则以下 select 语句可能会执行此操作。我以 MS SQL Server 为例。
Private Sub GetUnique()
Dim dt As New DataTable
Using cn As New SqlConnection("Your Connection String")
Dim strSQL As String = "Select Folder, Count(Folder) As Unique, Sum(Times) TotalTimes From MyTable Where Unique = 1 Group By Folder;"
Using cmd As New SqlCommand(strSQL, cn)
cn.Open()
Using dr As SqlDataReader = cmd.ExecuteReader
dt.Load(dr)
End Using
End Using
End Using
DataGridView1.DataSource = dt
End Sub
推荐阅读
- bootstrap-4 - Bootstrap 下拉菜单 CSS 问题
- acrobat - 如何将多个 PDF 转换为 Html 网页
- google-cloud-platform - ApacheBeam 数据流作业的类型错误:'无法确定性编码
, 提供类型提示' - spring - 如何使用代理流从 Spring 资源服务器调用 Microsoft Graph
- spring-boot - Springboot @GetMapping 方法注入以对象为参数
- python - Kubernetes 上的 Plotly Dash 应用程序——不加载 Javascript
- r - 通过数据帧的多列循环 TukeyHSD 函数
- javascript - io.sockets.adapter.rooms[roomId] 在使用 socket.join[roomId] 后返回 undefined?
- android - 媒体文件选择器和 Android 11
- apache-kafka - AWS MSK 默认 enable.auto.commit 设置