我需要在下面的字典中对 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
我需要的是在给定这些规则的情况下检索单个网站(字符串类型的字典值)或 NOTHING(如果查询找不到负担得起的结果):
- 字典键(整数)必须大于 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