Linq查询无法返回预期结果

时间:2017-10-01 02:34:45

标签: c# linq wcf

我在Angular JS Application中使用wcf服务。但我收到了预期的结果。我怀疑Linq Query或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;
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

返回集合的linq查询(如SelectWhere)将永远不会返回null。只有返回单个结果的查询(例如FirstSingle)才可以。

虽然目前尚不清楚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();