구조체 배열 (aryShooters()) 있습니다. 그들이 어떤 게시물에 있는지, 그리고 활동 중인지 여부를 결정해야합니다. 그들이 그렇다면 나는 그들이 어느 색인에 있었는지 저장하고 싶다. 게시물이 채워지지 않은 경우 배열의 해당 지점에 대한 색인이 -1로 설정됩니다. 내가 겪고있는 문제는 내가 그것을 확인한 다음 AndAlso를 사용하여 나머지 라인을 단락시키지 않는다는 것이다.또한 Linq 쿼리 vb.net에서 작동하지 않습니다
Dim p1i as integer = -1
Dim p1i as integer = -1
Dim p1i as integer = -1
Dim p1i as integer = -1
Dim p1i as integer = -1
For j as integer = 0 to UBound(aryShooters)
If aryShooters(j).active = true Then
Select Case aryShooters(j).post
Case 1
p1i = j
Case 2
p2i = j
Case 3
p3i = j
Case 4
p4i = j
Case 5
p5i = j
End Select
End If
Next
그리고 즉시 그 후 나는 내 쿼리 전화 : 나는 인덱스를 설정 한 경우 다음
이다. 이것을 망치고있는 마지막 5 라인 만.
Dim pos
pos = From p In db.Banks
Where p.ShootId = shootIdProp And p.EventId = eventNo _
And ((p.FlightNo >= (CurFlight - kd)) And (p.FlightNo <= (CurFlight + (x-1) + ku))) _
And ((p.SectionNo Like lowsec) Or (p.SectionNo like upsec)) _
And p.Inactive = False And (((p.P1 like p1a And p.P2 Like p2a And p.P3 Like p3a And p.P4 Like p4a And p.P5 Like p5a) And resetFlags = False) _
Or ((p.NmbrOpenPosts >= numberShooters) And resetflags = True)) _
And ((((p1i > -1) AndAlso ((Math.Abs(aryShooter(p1i).Ydg - p.HcpYds1) <= perTrap) Or (p.HcpYds1 = 0.0))) And _
(((p2i > -1) AndAlso ((Math.Abs(aryShooter(p2i).Ydg - p.HcpYds2) <= perTrap) Or (p.HcpYds2 = 0.0))) And _
(((p3i > -1) AndAlso ((Math.Abs(aryShooter(p3i).Ydg - p.HcpYds3) <= perTrap) Or (p.HcpYds3 = 0.0))) And _
(((p4i > -1) AndAlso ((Math.Abs(aryShooter(p4i).Ydg - p.HcpYds4) <= perTrap) Or (p.HcpYds4 = 0.0))) And _
(((p5i > -1) AndAlso ((Math.Abs(aryShooter(p5i).Ydg - p.HcpYds5) <= perTrap) Or (p.HcpYds5 = 0.0))))
Select p
수정 - 글쎄, 고쳐주었습니다. 0 위치에 공백을 추가했습니다. 여전히 참조 할 수는 있지만 실제로 읽지는 못합니다.
pos = From p In db.Banks
은 다음과 같이해야합니다 :
pos = From p In db.Banks _
내가 줄 생각 :
내가 줄 생각 :
이 왜 전혀 여기에 비트 연산자를 사용합니까? – Magnus
@ Magnus, 가능한 한 효율적으로 많은 기준으로 쿼리에서 선택하는 방법을 제안하는 방법은 무엇입니까? 각 루프에 대한 거대한 if 문을 통해 조건을 실행하지 않는 것이 테이블을 통해 정렬하기위한 Linq/Sql을 통해 실행하는 것보다 효율적이지 않습니까? –
여기서 'AndAlso'와'OrElse'를 사용해서는 안됩니까? – Magnus