0

私はこのlinqクエリを持っていますが、まだテストしていません。しかし、なぜAndステートメントを別の行に置くことができないのか疑問に思っています。試してみると、予期しないトークン エラーが発生し、c と b が保護レベルにアクセスできなくなります作業クエリ

Dim result =
                From b In context.H_Beneficiary
                         Join e In context.Employees
                         On b.EmployeeId Equals (e.EmployeeId)
                         Join c In context.Companies
                         On e.AncillaryId Equals (c.CompanyId)
                         Where e.AncillaryId.Equals(iPerId) And c.AncillaryId.Equals(iCompanyId) And ((b.EndDate Is Nothing) Or (b.EndDate.Equals(DateTime.Today)))
                         Select b.EnterTime


            Return CDate(result)


        Return CDate(result)

希望するクエリ

 Dim result =
                From b In context.H_Beneficiary
                         Join e In context.Employees
                         On b.EmployeeId Equals (e.EmployeeId)
                         Join c In context.Companies
                         On e.AncillaryId Equals (c.CompanyId)
                         Where e.AncillaryId.Equals(iPerId)
                         And c.AncillaryId.Equals(iCompanyId)
                         And ((b.EndDate Is Nothing) Or (b.EndDate.Equals(DateTime.Today)))
                         Select b.EnterTime
4

1 に答える 1

3

暗黙の行継続は「And」を考慮していないようです。前の行で明示的な行継続を使用するだけです。

     From b In context.H_Beneficiary 
                 Join e In context.Employees 
                 On b.EmployeeId Equals (e.EmployeeId) 
                 Join c In context.Companies 
                 On e.AncillaryId Equals (c.CompanyId) 
                 Where e.AncillaryId.Equals(iPerId) _
                 And c.AncillaryId.Equals(iCompanyId) _
                 And ((b.EndDate Is Nothing) Or (b.EndDate.Equals(DateTime.Today))) 
                 Select b.EnterTime 
于 2012-09-13T17:06:59.440 に答える