C# Linq查询无法返回预期结果

C# Linq查询无法返回预期结果,c#,linq,wcf,C#,Linq,Wcf,我正在将wcf服务消费到Angular JS应用程序中。但我收到了预期的结果。我怀疑Linq查询或Angular Js应用程序有什么问题。这里是我试图实现的,如果用户名和密码错误,该方法应该返回false并开始计数尝试。如果用户输入错误的用户名或密码4次,则帐户被锁定。否则,若在4次内使用输入正确的用户名或密码,则该方法应返回true并尝试将计数重新设置为零 这是我的界面 [OperationContract] [WebInvoke(Method = "POST", Reques

我正在将wcf服务消费到Angular JS应用程序中。但我收到了预期的结果。我怀疑Linq查询或Angular Js应用程序有什么问题。这里是我试图实现的,如果用户名和密码错误,该方法应该返回false并开始计数尝试。如果用户输入错误的用户名或密码4次,则帐户被锁定。否则,若在4次内使用输入正确的用户名或密码,则该方法应返回true并尝试将计数重新设置为零

这是我的界面

[OperationContract]
    [WebInvoke(Method = "POST",
    RequestFormat = WebMessageFormat.Json,
    ResponseFormat = WebMessageFormat.Json,
    //BodyStyle = WebMessageBodyStyle.WrappedRequest,
    UriTemplate = "/AuthenticateUser")]
    bool AuthenticateUser(UserLogin userLogin );  
下面是该方法的实现

  public bool AuthenticateUser(UserLogin userLogin)
    {
        using (HalifaxDatabaseEntities db = new HalifaxDatabaseEntities())
        {
        var attamp = from X in db.tblUsers
                         where X.Username==userLogin.Username&& X.Password== userLogin.Password

                         select X.RetryAttempts!=4;

            if (attamp!=null )
            {
                 return true;

            }

            else
            {

                return false;
            }
        }
    }

返回集合的linq查询(如
Select
Where
)永远不会返回
null
。只有返回单个结果的查询(如
First
single
)才能执行

虽然尚不清楚
RetryAttempts
是如何改变的,但更好的方法可能是:

// this will return a collection will only one result - true or false
var attamp = from X in db.tblUsers
             where X.Username==userLogin.Username&& X.Password== userLogin.Password
             select X.RetryAttempts!=4;
//.Single() will give you the value of the one and only result - either true or false
return attamp.Single();

返回集合的linq查询(如
Select
Where
)永远不会返回
null
。只有返回单个结果的查询(如
First
single
)才能执行

虽然尚不清楚
RetryAttempts
是如何改变的,但更好的方法可能是:

// this will return a collection will only one result - true or false
var attamp = from X in db.tblUsers
             where X.Username==userLogin.Username&& X.Password== userLogin.Password
             select X.RetryAttempts!=4;
//.Single() will give you the value of the one and only result - either true or false
return attamp.Single();

我的意思是,如果用户输入错误的用户名或密码4次,然后帐户应该被锁定,并开始计数从1到4。。否则,如果用户第一次输入错误的用户名或密码,但第二次输入的用户名和密码是正确的,则尝试应从零开始计数,方法返回true。我的意思是,如果用户输入错误的用户名或密码4次,则应锁定帐户,并从1开始计数,直到4。。否则,若uer第一次输入错误的用户名或密码,但第二次输入正确的用户名或密码,则尝试次数应从零开始计数,方法返回true