Смесвате филтрирано включване с филтриране на обект.
Филтрирано включване
.Include(m => m.Roles.Where(r => roles.Contains(r.Name)))
просто филтрира елементите в свързаната колекция (роли на менюто в този случай).
За да филтрирате набора от обекти (менютата в този случай), трябва да го замените с обичайния Where
opator, който за желаното филтриране ще бъде
.Where(m => m.Roles.Any(r => roles.Contains(r.Name)))