As it happens, here's a snippet from an application I wrote a while ago.
"perms" is the junction table
It also binds a drop-down to a data source.
I should add that I used the now deprecated LINQ to do this, so the code might look a little odd (LINQ looks like backwards SQL).
Code:
.......
Else
'the user should see just their set of sites
'derive the allowed sites by looking up the site-codes/site-names for those allowed
'by the user in the junction table
Dim mySites = From allsites In context.lookups
Join perms In context.Permissions
On perms.SIMSDatabaseCode Equals allsites.AdminSiteCode
Where (perms.userID = userID And allsites.SIMSFileServerPath.ToString.Length > 0)
Select Code = allsites.AdminSiteCode.ToUpper.Trim,
Full = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(allsites.SiteFullName.Trim) 'use Title Case to properly capitalise the words
'bind the drop-down list to the result (2D array)
SIMSDropDown.DataSource = mySites.ToArray()
End If
'define the display and value members for the combo box
SIMSDropDown.DisplayMember = "Full"
SIMSDropDown.ValueMember = "Code"