web-dev-qa-db-fra.com

Expression LINQ ToListAsync avec un DbSet

J'ai codé une application Internet C # MVC5 et j'ai une question sur l'utilisation de .ToListAsync Expression LINQ.

Voici mon code qui fonctionne dans un résultat d'action Index:

IEnumerable<IMapLocationItem> mapLocationImageGalleries = await db.mapLocationImageGalleries.Where(m => m.userName.Equals(userName)).ToListAsync();
IEnumerable<IMapLocationItem> mapLocationVideoGalleries = await db.mapLocationVideoGalleries.Where(m => m.userName.Equals(userName)).ToListAsync();
IEnumerable<IMapLocationItem> mapLocationItemsCombined = mapLocationImageGalleries.Concat(mapLocationVideoGalleries);

Je souhaite créer une fonction de service pour le code ci-dessus. Voici ce que j'ai codé:

public async Task<IEnumerable<IMapLocationItem>> GetAllMapLocationItemsFromUserName(string userName)
{
    IEnumerable<IMapLocationItem> mapLocationImageGalleries = await db.mapLocationImageGalleries.Where(m => m.userName.Equals(userName)).ToListAsync();
    IEnumerable<IMapLocationItem> mapLocationVideoGalleries = await db.mapLocationVideoGalleries.Where(m => m.userName.Equals(userName)).ToListAsync();
    IEnumerable<IMapLocationItem> mapLocationItemsCombined = mapLocationImageGalleries.Concat(mapLocationVideoGalleries);
    return mapLocationItemsCombined;
}

Je reçois l'erreur suivante:

Error   17  'System.Linq.IQueryable<CanFindLocation.Models.MapLocationItems.MapLocationImageGallery>' does not contain a definition for 'ToListAsync' and no extension method 'ToListAsync' accepting a first argument of type 'System.Linq.IQueryable<CanFindLocation.Models.MapLocationItems.MapLocationImageGallery>' could be found (are you missing a using directive or an Assembly reference?)

Le même code fonctionne correctement dans le résultat de l'action Index, mais pas dans une méthode de service. Pourquoi est-ce et comment puis-je faire fonctionner cela?

Merci d'avance

22
user3736648

Comme indiqué dans les commentaires, ajoutez using System.Data.Entity (sous le package Entity Framework) pour obtenir le QueryableExtensions.

Pour .NET Core, ces méthodes sont sous Microsoft.EntityFrameworkCore

58
Yuval Itzchakov