2016-07-28 27 views
0

我有這樣的代碼:LINQ的開啓和關閉括號不匹配

using (Entities db = new Entities()) 
      { 
       refer = db.Refferals.Where(r => 
       r.RefferalDetails.Any(rd => 
       (Name.Contains(rd.Name) || rd.Name.Contains(Name) || LastName.Contains(rd.LastName) || rd.LastName.Contains(LastName) 
       || Company.Contains(r.Company) || r.Company.Contains(Company) 
       Mobile.Contains(rd.Mobile) || rd.Mobile.Contains(Mobile))) && 
       Mobile.Length > 9 && Name.Length > 1 && LastName.Length > 1 && Company.Length > 2 
       ).ToArray(); 

      } 

雖然括號計數是正確的,但編輯器提供有一個額外的括號。 enter image description here

我試過重新啓動Visual Studio,但它是一樣的。

+0

這看起來不是匹配! – user3185569

+0

'r.Company.Contains(Company)'和'Mobile.Contains(rd.Mobile)'之間沒有操作符。但更普遍的是,這是完全不可讀的 - 很難發現有什麼問題。 –

+0

那麼問題在哪裏?你說開合圓括號不符? –

回答

3

嘗試在r.Company.Contains(Company)Mobile.Contains(rd.Mobile)之間添加缺少的||

並修復縮進,這使得更容易看到什麼是錯的。當我縮進它時,失蹤的操作員像拇指疼痛伸出,很容易看出這些人的工作方式。

using (Entities db = new Entities()) 
{ 
    refer = db.Refferals.Where(r => 
     r.RefferalDetails.Any(rd => 
      (
       Name.Contains(rd.Name) 
       || rd.Name.Contains(Name) 
       || LastName.Contains(rd.LastName) 
       || rd.LastName.Contains(LastName) 
       || Company.Contains(r.Company) 
       || r.Company.Contains(Company) 

       || /* <-- ADDED OR OPERATOR HERE */ 
        Mobile.Contains(rd.Mobile) 

       || rd.Mobile.Contains(Mobile) 
      ) 
     ) 
     && Mobile.Length > 9 
     && Name.Length > 1 
     && LastName.Length > 1 
     && Company.Length > 2 
    ).ToArray(); 
} 
1

它缺少一個** ||前** Mobile.Contains(rd.Mobile)

refer = db.Refferals.Where 
       (
        r => r.RefferalDetails.Any 
        (
         rd => 
          (
           Name.Contains(rd.Name) || rd.Name.Contains(Name) || LastName.Contains(rd.LastName) || rd.LastName.Contains(LastName) 
            || Company.Contains(r.Company) || r.Company.Contains(Company) 
              || Mobile.Contains(rd.Mobile) || rd.Mobile.Contains(Mobile) 
          ) 
        ) 
        && Mobile.Length > 9 && Name.Length > 1 && LastName.Length > 1 && Company.Length > 2 
       ).ToArray(); 
0

沒有運行的代碼看起來你做某種一元選擇(RD)的。我建議你開始重構你的代碼,並打破每個條件的一部分...

相關問題