I think this will do:
var dictionary = (from company in companies
from person in company.Persons
group company by person).ToDictionary(x => x.Key,
x => x.ToList());
Alternatively, use Lookup:
var lookup = company.SelectMany(company => company.Persons,
(company, person) => new { company, person })
.ToLookup(x => x.person, x => x.company)
.ToDictionary(x=>x.Key, x => x.ToList()) ;
, " " - , LINQ, #. LINQ to SQL ( ..), , , .