2016-12-10 3 views
0

私はEVENTSとCATEGORYテーブルを持っています。 1つのイベントに複数のカテゴリが関連付けられている可能性があります。それは1対多です。LINQの一対多のリレーションシップテーブルをフィルタリングする方法は?

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

ここに私のコードです

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

助けていただければ幸いです!あなたは、クエリを作成して、条件を追加する最初の必要

+0

あなたのポコスとdbcontextについての詳細はありませんが、とにかく私の答えをチェックして、有用であることを知らせてください。 –

+0

フィルタ付きインクルードはまだサポートされていません。 https://github.com/aspnet/EntityFramework/issues/1833を参照してください。 – Smit

答えて

0

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

を私はあなたのオブジェクトの名前についてはよく分からないが、あなたはあなたのコード内で修正することができます。

関連する問題