web-dev-qa-db-ja.com

DbSetを使用したLINQ ToListAsync式

C#MVC5インターネットアプリケーションをコーディングしましたが、.ToListAsync LINQ式。

インデックスアクションの結果で機能するコードを次に示します。

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);

上記のコードのサービス関数を作成したいです。ここに私がコーディングしたものがあります:

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;
}

次のエラーが表示されます。

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?)

インデックスアクションの結果ではまったく同じコードが正常に機能しますが、サービスメソッドでは機能しません。これはなぜですか、どうすればこれを機能させることができますか?

前もって感謝します

22
user3736648

コメントに記載されているように、using System.Data.Entity(Entity Frameworkパッケージの下)からQueryableExtensionsを取得します。

.NET Coreの場合、これらのメソッドは Microsoft.EntityFrameworkCore

58
Yuval Itzchakov