LINQ query to select subjects of interest
In terms of "SQL" what you need is a "Left Outer Join". So I would suggest this:

using (var db = CreateContext())
{
    var subjectDtos = from subject in Subjects
                      join interest in Interests on subject.SubjectId equals interest.SubjectId into si
                      from interest in si.DefaultIfEmpty()
                      select new SubjectDto { Subject = subject, HasBeenAdded = interest != null };
    return subjectDtos.Distinct().ToList();
}


And here is why:


I think that LINQ query is more readable in 'SQL like' format.
With the join clause you retrieve only the "subjects" that have an "interest". But with potential duplications if more than one "interest" has the ID of the same "subject" (For this reason I introduced the "Distinct" in the query, you can remove if the duplicate results interest you).
As a matter of consistency I suggest you rather than use the constructor, initialize the property directly.
For "DefaultIfEmpty" steatment docs go here. The Left Outer Join is there.


UPDATE My first code does not work. Fixed and tested now :)