私は多対多の関係を持つ2つの表を持っています。詳細なページに関連記事を表示したいのですが、関連する投稿は少なくとも現行の投稿のカテゴリを持つ投稿です。 現在の投稿の関連記事を選択するにはどうすればよいですか?Linq多対多選択
[ChildActionOnly]
public PartialViewResult GetRelatedPost(int id)
{
var relatedposts =
_db.Posts.Select(x => new { x.Id, x.Title, x.Slug, x.Image, x.IsActive,x.PostType,x.PostCategories })
.Where(x => x.IsActive && x.Id != id && x.PostCategories.Intersect(_db.PostCategories).Any())
.OrderByDescending(x => x.Id).Take(20)
.ToList();
}
はUPDATE:: 私はこのコードで私の問題解決:私はこのコードを試してみましたが、それは私が欲しいものではありません
var posts =
_db.Posts.Select(x => new { x.Id, x.Title, x.Slug, x.Image, x.IsActive,x.PostType,x.PostCategories })
.Where(x => x.IsActive && x.Id != id && x.PostCategories.Intersect(_db.PostCategories.Where(y=>y.Posts.Any(p => p.Id==id))).Any())
.OrderByDescending(x => x.Id).Take(20)
.ToList();
は、それが最善の方法ですか?
おそらくそれは、ポストと同じくらい簡単です.Categories.SelectMany(投稿);メインの投稿を選択し、熱心に読み込む場合は.Categories.Postsを含めます。 –
@AlexPavenどうすればいいですか?助けてください。 – Mike
私は何かのようなものを考えていました。プロジェクションを維持しています。x => x.Categories.Any(c => c.Posts.Any(p => p.Id == id)))。生成されたSQLは理想的ではないでしょうが、チェックする必要があります。 –