From MSDN:
If you do not specify member names in the anonymous type, the compiler gives the anonymous type members the same name as the property being used to initialize them. You must provide a name for a property that is being initialized with an expression
So the property names of anonymous types can only be inferred if your initializer is binding directly to a property or field. If you're calling a method or have some some other kind of expression, you'll need to specify the property name explicitly, like this:
var json = from r in results
select Convert(new
{
r.CaseId,
r.TamisCaseNo,
r.TaxPdr,
r.OarNo,
r.Tin,
DateReceived = r.DateReceived.ToShortDateString(),
r.IdrsOrgAssigned,
r.IdrsTeAssigned,
r.DateRequestComp
});