Type conversion error with async programming
asynchronous, c#, entity-framework
Solution
The `ToListAsync` methods return a `Task<List<T>>` object, which translate to a `Task<List<User>>` object in your case, but your method's return type is `Task<IList<User>>`.
The issue here is that covariance is not supported for `T` in `Task<T>`.
So, either you change the method's return type to `Task<List<User>>`, or you write the code to make the conversion yourself:
return this.db.Users
.Where(model => model.Id.Equals(userId, StringComparison.OrdinalIgnoreCase))
.ToListAsync()
.ContinueWith<IList<User>>(t => t.Result, TaskContinuationOptions.ExecuteSynchronously);
Problem
Can anyone tell me why this is not working? I have a method that looks like this: ``` public virtual async Task<IList<User>> GetAll() { return this.db.Users.Where(model => model.CompanyId.Equals(this.companyId, StringComparison.OrdinalIgnoreCase)).ToListAsync(); } ``` when I try to compile my code I get an error stating: Error 10 Cannot implicitly convert type 'System.Threading.Tasks.Task>' to 'System.Collections.Generic.IList'. An explicit conversion exists (are you missing a cast?) C:\Users\Jaymie\Documents\GitHub\Skipstone\Skipstone.Web\Repositories\UserRepository.cs 70 20 Skipstone.Web Yet directly under it I have this method: ``` public Task<User> FindByIdAsync(string userId) { return this.db.Users.Where(model => model.Id.Equals(userId, StringComparison.OrdinalIgnoreCase)).SingleOrDefaultAsync(); } ``` which works fine. I think I can't see the wood for the trees so need someone else's eyes to help me out :)