Getting only the necessary row
Assuming you also only want B when an entity has two types, or if they have A and C you don't care which one you get:

;WITH x AS 
(
  SELECT type, entity, rn = ROW_NUMBER() OVER 
    (
     PARTITION BY entity 
     ORDER BY CASE type WHEN 'B' THEN 1 ELSE 2 END
    )
  FROM dbo.tablename
)
SELECT type, entity 
  FROM x 
  WHERE rn = 1;


If you care about the order of A and C in the case where those are the only two (in this example A will be returned):

     ORDER BY CASE type WHEN 'B' THEN 1 WHEN 'A' THEN 2 ELSE 3 END