This isn't the most elegant query, but it should do the trick:
var intersection = dictionary1
.Where(kvp1 =>
dictionary2.ContainsKey(kvp1.Key)
&& dictionary2[kvp1.Key].classid = kvp1.Value.classid)
.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
This should fetch all key-value pairs in dictionary1 whose keys also exist in dictionary2, and whose classid matches the dictionary2 object's classid. Those key-value pairs are then transformed into a new dictionary.