フィルタリングされたインクルードとエンティティフィルタリングを混在させています。
フィルタリングされたインクルード
.Include(m => m.Roles.Where(r => roles.Contains(r.Name)))
関連するコレクション(この場合はメニューロール)のアイテムをフィルタリングするだけです。
エンティティセット(この場合はメニュー)をフィルタリングするには、通常のWhere
に置き換える必要があります。 必要なフィルタリングのためのオペレーター
.Where(m => m.Roles.Any(r => roles.Contains(r.Name)))