How do I write an EF7 (Core) / SQL Friendly Many-To-Many LINQ Query?
Say for example I have many Friends that speak Many Languages, and I want to find all friends for a given set of languages.
class Friend
{
Guid Id { get; set; }
ICollection<FriendLanguage> Languages { get; set; }
}
class Language
{
Guid { get; set; }
ICollection<FriendLanguage> Friends { get; set; }
}
class FriendLanguage
{
Friend { get; set; }
Language { get; set; }
}
Given I have a set of language IDs IEnumerable<Guid>
, I want to get back all the friends that speak those languages.
I tried this...
friends
.Include(o => o.Languages).ThenInclude(o => o.Language)
.SelectMany(o => o.Languages).Select(o => o.Language.Id)
.Intersect(languages);
...but this only returns a reduced set of Guids...not entirely sure where to go from here, or even if I'm on the right path.