gpt4 book ai didi

vb.net - 在 VB.Net 中过滤 DataTable

转载 作者:行者123 更新时间:2023-12-04 00:05:06 25 4
gpt4 key购买 nike

我有一个具有以下结构的数据表。

mid    mname      version  baseID
------------------------------------
1 tag3 1 1
2 tag3 2 1
3 tag3 3 1
4 tag5 1 4
5 tag5 2 4
6 tag6 1 6

从上面的结构我需要一个类似这样的数据表。我需要从数据表中获取最高版本。

mid    mname      version  baseID
------------------------------------
3 tag3 3 1
5 tag5 2 4
6 tag6 1 6

如何创建与上述类似的数据表。我正在使用 Vb.Net

提前致谢。

最佳答案

这取决于您如何填充原始数据表。如果你是通过查询数据库来做的,我会在查询本身中格式化结果集,如下所示:

(SQL)

select mid, mname, version, baseID
from <table> t
Join (select baseid, max(version) as version
from <table> group by baseID)maxVersion
on maxVersion.baseid = t.baseid and maxVersion.version = t.version

这会在将数据放入数据表之前对其进行格式化。

如果数据表是通过其他方式填充的,您需要对其进行过滤,然后将其放入另一个数据表中。那么一种简单的方法(假设您的数据表始终以上述方式排序)是:

for i as integer = 0 to datatable.rows.count - 1
if i < datatable.rows.count - 1 Then
if datatable.rows(i)(4).value <> datatable.rows(i+1)(4).value then
newDataTable.rows.Add(datatable.rows(i).itemArray())
End If
Else
newDataTable.rows.Add(datatable.rows(i).itemArray())
End if
Next

现在语法可能在这里或那里不对(用记事本写的)但是逻辑的想法在那里。假设您每次都具有相同的格式,那么我将检查该行何时更改为新的 baseid 并将该行添加到新的数据表中。从您发布的示例来看,特定 baseid 的最大版本似乎是该 baseid 的最后一行。

-克里斯

关于vb.net - 在 VB.Net 中过滤 DataTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7584878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com