Вот вариант, если вы хотите знать различающийся набор AttID
, который соответствует.
var DNR =
from x in dc.Contacts
from caa in x.Att
where x.ContactID == caa.ContactID
where caa.AttID == 102 || caa.AttID == 103
group caa.AttID
by new { x.ContactID, x.FirstName, x.LastName, }
into gs
orderby gs.Key.ContactID
select new
{
Contact = gs.Key,
Atts = gs.Distinct(),
};