无法将类型'bool'隐式转换为'system.threading.tasks.task bool'

Pet*_*ter 14 c# sql linq wcf

我有这个错误:"不能在我的服务实现代码中隐式地将类型'bool'转换为'system.threading.tasks.task bool'".你能纠正我的代码吗?

public Task<bool> login(string usn, string pwd)
    {
        DataClasses1DataContext auth = new DataClasses1DataContext();
        var message = from p in auth.Users
                      where p.usrName == usn && p.usrPass == pwd
                      select p;
        if (message.Count() > 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
Run Code Online (Sandbox Code Playgroud)

Ram*_*usa 15

您需要具体说明是否要将此操作异步发生.

作为一个例子Async Operation:

public async Task<bool> login(string usn, string pwd)
{
    DataClasses1DataContext auth = new DataClasses1DataContext();
    var message = await (from p in auth.Users
                  where p.usrName == usn && p.usrPass == pwd
                  select p);
    if (message.Count() > 0)
    {
        return true;
    }
    else
    {
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您不需要它作为异步操作,请尝试以下操作:

public bool login(string usn, string pwd)
{
    DataClasses1DataContext auth = new DataClasses1DataContext();
    var message = from p in auth.Users
                  where p.usrName == usn && p.usrPass == pwd
                  select p;
    if (message.Count() > 0)
    {
        return true;
    }
    else
    {
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

注意: async并且await与.net 4.5和C#5.0及更高版本兼容


tod*_*dmo 6

如果添加Task.FromResult,即使您的方法不是,也可以将其伪装成编译和工作async.在将Identity(这就是所有async)连接到传统后端时,我必须这样做.

例:

public override Task<bool> IsEmailConfirmedAsync(string userId)
{
  var profile = UserProfileType.FetchUserProfile(AtlasBusinessObject.ClientId.ToString(), decimal.Parse(userId));
  Task.FromResult(profile.EmailAddress.NullIfEmpty() != null);
}
Run Code Online (Sandbox Code Playgroud)

  • 不要使用`await Task.Delay(0);`而不是使用异步状态机来增加开销,而不要使用`async`关键字,而是要返回Task.FromResult(profile.EmailAddress.NullIfEmpty() != null);` (2认同)