我有一本火车字典(火车、车站)。station是一个具有两个布尔型属性(station.src和station.dst)的类
我想在字典上重复循环,直到字典中的每个站点都有这两个属性等于true
Do
li = New List(Of train)(trains.Keys)
For Each train In li
Dim s = trains(train).Item(1)
If s.name = sorc Then
s.src = True
s.dst = True
GoTo n1
End If
lo = New List(Of train)(trains.Keys)
For Each tr As train In lo
If s.name_t = trains(tr).Item(2).name_t Then
s.src = True
trains(tr).Item(2).dst = True
GoTo n1
End If
Next
trains.Remove(train)
n1: Next train
Loop Until (((each station.src in trains is true and each station.dst in trains is true))))发布于 2016-04-26 09:23:45
我对你的代码所做的事情有点迷惑。我曾希望能够在一定程度上简化它。如果你能解释一下背后的逻辑,那就太好了。
然而,您的问题的简单解决方案是:
Loop Until trains.SelectMany(Function (kvp) kvp.Value).All(Function (s) s.src And s.dst)我很想知道这段代码离你想要的结果有多近:
Dim sorcs = _
From kvp In trains
Where kvp.Value.Item(1).name = sorc
Select New With { .s1 = kvp.Value.Item(1), .s2 = kvp.Value.Item(2) }
Dim pairs = _
From kvp1 In trains
Join kvp2 In trains On kvp1.Value.Item(1).name_t Equals kvp2.Value.Item(2).name_t
Select New With { .s1 = kvp1.Value.Item(1), .s2 = kvp1.Value.Item(2) }
For Each pair In sorcs.Concat(pairs)
pair.s1.src = True
pair.s2.dst = True
Nexthttps://stackoverflow.com/questions/36853679
复制相似问题