No. A B is not guaranteed to be a C, so you cannot store a B in a variable that can hold only Cs. (An Animal is not guaranteed to be a Llama, so you can't create a generic Animal and store it in a Llama variable.)
However, you could provide a way of constructing a C instance from a B -- either by having the C copy the properties from the B, or by having the C store the B as a private member, and delegate property getters and setters to the contained B. Then your code would look like:
B b = brepo.GetBById(id);
C c = new C(b);
c.extraProperty = brepo.GetCountByBId(b.Id);
The same issue applies with an IQueryable of Bs. If they're not actually Cs, you can't pretend they are, not set extraProperty on them. What you can do is select those which are Cs using the OfType operator, try to cast them to Cs using the Cast operator, or create new Cs from the queried Bs using the Select operator and one of the techniques mentioned above, e.g. bs.Select(b => new C(b))
.