我需要在下面的字典上进行一个简单的VB.NET LINQ查询,但是我对这个主题还很陌生,所以需要您的帮助。
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
Dim appEnums As New Dictionary(Of Integer, String)
appEnums.Add(1, "www.eva.com")
appEnums.Add(2, "www.eva2.com")
appEnums.Add(4, "www.evanetwork.com")
appEnums.Add(5, "www.eva3.com")
appEnums.Add(6, "www.eva4.com")
appEnums.Add(7, "www.eva5.com")
appEnums.Add(8, "www.eva6.com")
appEnums.Add(9, "www.eva1.com")
appEnums.Add(10, "www.eva7.com")
Dim startSite As Integer = 1
Dim mainSite As Integer = 4
Dim returnSite As Integer = 5
End Sub
我需要的是根据以下规则检索出一个单独的网站(字符串类型的字典值)或什么都没有(如果查询找不到可支付结果):
- 字典键(整数)必须大于startSite且不能等于mainSite或returnSite(两者都必须从结果中排除)
编辑:非常感谢迄今为止的回复!我不确定它们是否有效,必须测试它们,乍一看有些奇怪。
我自己找到了一个解决方案,它完美地工作了(简直难以置信),但我认为应该有更“优雅”的方法(在vb.net中)。等待建议 :)
Dim resultSite As String
Try
resultSite = appEnums.Where(Function(x) x.Key > startSite _
AndAlso x.Key <> mainSite AndAlso x.Key <> returnSite) _
.OrderBy(Function(x) x.Key).Select(Function(x) x.Value).First()
Catch
resultSite = Nothing
End Try
Skip
,因为它要求字典必须严格按升序排列。 - dlras2