LINQの一対多のリレーションシップテーブルをフィルタリングする方法は?

entity-framework-core linq

質問

私はEVENTSとCATEGORYテーブルを持っています。 1つのイベントに複数のカテゴリが関連付けられている可能性があります。それは1対多です。

CATEGORYテーブルをフィルタリングしようとすると、エラーが発生していますi => i.Category.CategoryName.Contains("Social") :プロパティ式i => i.Category.CategoryName.Contains("Social")が無効です。式は、プロパティへのアクセスを表す必要がありますt => t.MyProperty 。関連データの追加の詳細については、関連データの読み込みを参照してください。

ここに私のコードです

   var viewModel = new EventIndexData();
            viewModel.Events = await _context.Events
                                 .Include(i => i.Categories)
                                    .ThenInclude(i => i.Category.CategoryName.Contains("Social"))
                                    .AsNoTracking()
                                 .ToListAsync();

どんな助けにも感謝!

人気のある回答

最初にクエリを作成し、条件を追加する必要があります。

var categoryName = "Social";

var query = _context.Events.Include(i => i.Category);

if (String.IsNullOrEmpty(categoryName))
{
    query = query.Where(item => item.Category.CategoryName.Contains(categoryName));
}

var viewModel = new EventIndexData();

viewModel.Events = await query.ToListAsync();

あなたのオブジェクト名についてはわかりませんが、あなたのコードで修正することができます。



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ