【发布时间】:2015-01-16 10:49:04
【问题描述】:
我正在尝试根据最新日期值过滤数据表中的行。目前我正在使用字典对象,这不适合我的实际目标,因为我的数据表将有两列以上,从而使字典对象的键值特征无效。忍受我有限的知识,我自己对 .net 开发和学习的东西还比较陌生。
我目前的编码是
Module Module1
Sub Main()
Dim names As Dictionary(Of String, DateTime) = New Dictionary(Of String, Date)
Dim dt As New DataTable
Dim strDetail As String = Nothing
dt.Columns.Add("Name")
dt.Columns.Add("punchdate", Type.GetType("System.DateTime"))
dt.Rows.Add("Rajesh", "01-jan-2014")
dt.Rows.Add("Rajesh", "01-feb-2014")
dt.Rows.Add("Rajesh", "01-apr-2014")
dt.Rows.Add("Rajesh", "01-sep-2014")
dt.Rows.Add("John", "15-sep-2014")
For Each row As DataRow In dt.Rows
strDetail = row.Item("Name")
'Debug.WriteLine(strDetail)
If names.ContainsKey(strDetail) Then
If names(strDetail) < row.Item("punchdate") Then
names(strDetail) = row.Item("punchdate")
End If
Else
names.Add(row.Item("Name"), row.Item("punchdate"))
End If
Next row
For Each kvp As KeyValuePair(Of String, DateTime) In names
Dim v1 As String = kvp.Key
Dim v2 As DateTime = kvp.Value
Debug.WriteLine(v1 + "; " + v2.ToString)
Next
End Sub
结束模块
请让我知道,根据我的要求,这应该是最佳解决方案,即根据最大打孔日期返回行并且不仅仅是两列。
问候,
【问题讨论】:
-
字典可以包含复杂的 TValue 类型。例如,整个员工或客户记录。因此,您可以将合格 DT,Row 的全部内容存储在
Dictionary(of String, MyClass) -
Plunotix,谢谢。我需要了解更多信息 :) 实际上,我的数据表将有多个员工的多条记录,我需要根据每个员工的记录可用的最大日期来检索每个员工的最新记录。你能指出我的工作代码块吗?
-
This answer 可能会有所帮助 - 情况类似。它至少将 Class 对象说明为 Dictionary 中的 TValue。对于关键,如果您只希望每个 emp 有一条记录,我会使用更可能是唯一的东西,例如 EmpID 或其他东西。