Linq左右括号不匹配

Linq opening and closing parentheses does not match

我有这个代码:

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();

            }

虽然括号数是正确的,但小编提出多了一个括号。

我尝试重新启动 Visual Studio 但还是一样。

尝试在 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();
}

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();

如果没有 运行 代码,您似乎会进行某种一元选择 (rd)。我建议您开始重构代码并将每个条件分解为一部分...