如何检查字典中的值是不是大于传递的值
Posted
技术标签:
【中文标题】如何检查字典中的值是不是大于传递的值【英文标题】:How to check if a value in a dictionary is greater than value being passed如何检查字典中的值是否大于传递的值 【发布时间】:2015-07-14 21:36:43 【问题描述】: Dim dictionary As Dictionary(Of Integer, String) = New Dictionary(Of Integer, String)
dictionary.Add(i, str)
Dim rs = dictionary.Where(Function(r) DateTime.Parse(r.Value) > DateTime.Parse(str))
我正在向字典中动态添加一些值,其中 Key 是整数类型,值是字符串类型。
所以在添加到字典后,我需要检查新传递的值是否大于字典中的所有值的条件。如果是,它应该返回布尔真值,否则返回假
【问题讨论】:
您应该添加一些您存储在字典中的值的示例以及 str 的值是什么。也许我们可以找到实际代码不起作用的原因 如果它们代表日期时间,为什么要将值存储为字符串? 【参考方案1】:以下代码可以满足您的要求。
Dim dictionary As Dictionary(Of Integer, String) = New Dictionary(Of Integer, String)
dictionary.Add(0, "1-May-2015")
dictionary.Add(1, "6/10/15")
Dim i As Integer = 2
Dim str As String = "2015-06-11"
Dim larger As Boolean = dictionary.All(Function(r) DateTime.Parse(r.Value) < DateTime.Parse(str))
dictionary.Add(i, str)
MessageBox.Show(str & " is " & If(larger, "", "not") & " larger than all previous values")
在将新项目添加到字典之前进行检查,如果新日期等于最大的先前日期,则布尔值为 False。
但是,您可能应该将日期作为 DateTime 而不是 String 存储在 Dictionary(Of Integer, DateTime) 中。
【讨论】:
【参考方案2】:你不能。字典使用复杂的散列函数来散列键并返回值。因此,字典并不关心值。
但是,有一个简单的解决方案可以解决您的问题。 您需要做的就是存储一个包含最大数字的变量。如果新数字最大,则更新此变量并返回 true。
【讨论】:
以上是关于如何检查字典中的值是不是大于传递的值的主要内容,如果未能解决你的问题,请参考以下文章
如何检查 NSDictionary 中的值是不是存在于字典数组中