И также не работает в Linq Query vb.net - PullRequest
0 голосов
/ 26 января 2012

У меня есть массив структур (aryShooters ()).Мне нужно определить, в каком посте они находятся и активны ли они.Если они есть, то я хочу сохранить, по какому индексу они были.Если сообщение не было заполнено, индекс для этого места в массиве устанавливается на -1.Проблема в том, что в моем запросе, где я проверяю его, затем использую AndAlso, не замыкается остальная часть строки.

Здесь я устанавливаю индексы:

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. Он все еще может ссылаться на него, но фактически никогда не читает его.

1 Ответ

0 голосов
/ 26 января 2012

Возможно, это поможет (я не эксперт по vb):
Я думаю, что строка:

pos = From p In db.Banks

Должно быть так:

pos = From p In db.Banks _ 

Я думаюстрока:

Or (p.HcpYds5 = 0.0))))
            Select p

Должно быть так:

Or (p.HcpYds5 = 0.0))) _ 
            Select p

И в последнем операторе if у вас много круглых скобок, которые не используются.Там я думаю, что утверждение:

 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

должно быть так:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...