以下の辞書の 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
ここで必要なのは、これらのルールを考慮して、SINGLE Web サイト (文字列型の辞書値) または 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